2014-10-15 1 views
1

Я использую Hadoop streaming jar и пытается передать переменную среды, которая указывает на несколько дорожек с использованием -cmdenv.прохождение нескольких путей к cmdenv в Hadoop потокового

hadoop jar ../hadoop-streaming.jar \ 
-libjars .../something.jar \ 
-inputFormat ..CustomInputFormat \ 
-file mapper.py \ 
-file stream.py \ 
-cacheFile ../files#aliasname \ 
-cmdenv LD_LIBRARY_PATH=/home/files/1/xyz:/home/files/2/:/home/files/1/abc/ \ 
-mapper mapper.py \ 
-input hdfs:/inputfiles/ \ 
-output hdfs:/outputfiles/ \ 
-reducer NONE \ 
-verbose 

Есть несколько запросов у меня есть. 1. Экологическая переменная, определенная в cmdenv, не отображается сценарию сопоставления 2. Могу ли я предоставить каталоги hdfs как путь к переменной окружения?

Когда я запустил команду hadoop, я получаю сообщение об ошибке в журналах приложений, где он выдает «ошибку при загрузке разделяемых библиотек: xyz.so: невозможно открыть файл общего объекта: нет такого файла или каталога».

Кроме того, я мог бы заметить переменную среды в поток работы STREAM: stream.addenvironment=HADOOP_ROOT_LOGGER= LD_LIBRARY_PATH=<path1>/:<path2>/..

Пожалуйста, предложите, где я неправильно?

+0

Вы можете вставить фактическую ошибку и какой общий объект это скорее, чем abc.so? Также удалите пробел между «=» ключа параметра и значением – SMA

+0

Привет, Ниже приведена фактическая ошибка. LOGTYPE: STDERR LogLength: 495 Вход Содержание: ./imcf.exe: ошибка при загрузке разделяемых библиотек: libMeasureCommon.so: не удается открыть общий объектный файл: Нет такого файла или каталога Traceback (самый последний вызов последнего): файла "./stream.py", строка 8, в print val IOError: [Errno 32] Broken pipe –

+0

Итак, вам не хватает библиотек. проверьте, нужна ли вам установка некоторых библиотек. Do ldd на imcf.exe (надеюсь, что это не windows exe и просто расширение для Linux) – SMA

ответ

2
I was able to resolve the issue by adding the C code and dependency libraries to hdfs and then add them to CacheFile with symlinks and providing the symlinks in the environmental variable in cmdenv. See below. 

hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming.jar \ 
-libjars /<path>/jars/Hadoop_Streaming.jar \ 
-inputformat com.hadoop.IMCFInputFormat \ 
-outputformat org.apache.hadoop.mapred.TextOutputFormat \ 
-file mapper.sh \ 
-file stream.py \ 
-cacheFile hdfs:/<hdfspath>/IMCF/Common/#IMCF_Common \ 
-cacheFile hdfs:/<hdfspath>/IMCF/STMC/Common/#IMCF_STMC_Common \ 
-cacheFile hdfs:/<hdfspath>/IMCF/STMC/StarLabResults/#IMCF_STMC_StarLabResults \ 
-cacheFile hdfs:/<hdfspath>/IMCF/STMC/StarMeasureMembership/#IMCF_STMC_StarMeasureMembership \ 
-cacheFile hdfs:/<hdfspath>/IMCF/STMC/StarMedicalCase/#IMCF_STMC_StarMedicalCase \ 
-cacheFile hdfs:/<hdfspath>/IMCF/STMC/StarMedicalClaim/#IMCF_STMC_StarMedicalClaim \ 
-cacheFile hdfs:/<hdfspath>/IMCF/STMC/StarPrcdrTracking/#IMCF_STMC_StarPrcdrTracking \ 
-cacheFile hdfs:/<hdfspath>/IMCF/STMC/StarRxClaim/#IMCF_STMC_StarRxClaim \ 
-cacheFile hdfs:/<hdfspath>/IMCF/STMC/Stars/#IMCF_STMC_Stars \ 
-cacheFile hdfs:/<hdfspath>/IMCF/STMC/StarDerived/#IMCF_STMC_StarDerived \ 
-cacheFile hdfs:/<hdfspath>/lkup_files/MFW_meas_comp_def.lkup#MFW_meas_comp_def.lkup \ 
-cacheFile hdfs:/<hdfspath>/lkup_files/MFW_msr_cdset_x_cdset_lst.lkup#MFW_msr_cdset_x_cdset_lst.lkup \ 
-cacheFile hdfs:/<hdfspath>/lkup_files/MFW_msr_criteria.lkup#MFW_msr_criteria.lkup \ 
-cacheFile hdfs:/<hdfspath>/lkup_files/MFW_run_params.properties#MFW_run_params_HMO.env \ 
-cacheFile hdfs:/<hdfspath>/IMCF/MainModule/imcf.exe#imcf.exe \ 
-mapper mapper.sh \ 
-input /<hdfspath>/Stars_Ext_Tbl/IMCF_CIF_EXT/ \ 
-output /<hdfspath>/stream_output/ \ 
-reducer NONE \ 
-cmdenv LD_LIBRARY_PATH=IMCF_Common:IMCF_STMC_Common:IMCF_STMC_StarLabResults:IMCF_STMC_StarMeasureMembership:IMCF_STMC_StarMedicalCase:IMCF_STMC_StarMedicalClaim:IMCF_STMC_StarPrcdrTracking:IMCF_STMC_StarRxClaim:IMCF_STMC_Stars:IMCF_STMC_StarDerived \ 
-verbose