修改hadoop腳本改變CLASSPATH中jar加載順序

    先說一下環境,有兩個集羣,一個新的一箇舊的,打算把新的調試好而後把舊的關掉。服務器

    新:Cloudera Express 5.6.0,CDH-5.6.0ide

    舊: Cloudera Express 5.0.5,CDH-5.0.5oop

    新集羣搭建過程當中發現一個問題,執行如下命令對lzo文件建立索引,在新集羣中job沒法提交到指定隊列,一樣的命令在舊集羣中正常:spa

     hadoop jar hadoop-lzo.jar com.hadoop.compression.lzo.DistributedLzoIndexer  -D mapreduce.job.queuename=copy  /data/lzodata/調試


    兩個集羣的配置區別在於,舊集羣lzo的配置一個是手動的,新集羣是用GPLEXTRAS的parcel包配置的。索引

用GPLEXTRAS配置的新集羣默認吧lzo的jar包加載到hadoop  classpath路徑中了,致使的結果是DistributedLzoIndexer  提交不到正確的隊列。隊列

    由於新版版的hadoop-lzo.jar中hadoop

    com.hadoop.compression.lzo.DistributedLzoIndexer 修改了獲取Configuration的方式get

     Configuration conf = new Configuration();                                                  Job job = new Job(conf );   源碼

    舊版本中爲

    Job job = new Job(getConf());                                                              

    修改了源碼,而後從新上傳到提交job的服務器,只在提交job的時候起做用。                                                  

    修改腳本的位置,修改前請作好備份:

    /opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib/hadoop/bin

    修改腳本中 export CLASSPATH=/opt/cloudera/userlib/hadoop-lzo.jar:$CLASSPATH


    上面的/opt/cloudera/userlib/hadoop-lzo.jar爲想要加載的路徑

相關文章
相關標籤/搜索