Hadoop classpath问题

    近期使用一个Hadoop周边系统,druid的时候发现一个问题,在druid配置hdfs位置的时候配置如下:

# Deep storage (local filesystem for examples – don’t use this in production)
druid.storage.type=hdfs
druid.storage.storageDirectory=hdfs://ns****/druid/localStorage

    启动脚本为:

java -Xmx256m -Ddruid.realtime.specFile=examples/wikipedia/wikipedia_realtime_kafka.spec -Duser.timezone=UTC -Dfile.encoding=UTF-8 -classpath config/_common:config/realtime:lib/* io.druid.cli.Main server realtime

    大多数开启HA的Hadoop集群,如果使用集群的话基本都是这种配置。

    启动Druid后发现,并没有写入我想要的集群,而写入了另一个集群,反复查找,以为打包过程中混入了错误的hdfs-site.xml文件等等,但是并没有找到。最后在同事的帮助下发现,原来我们曾经配置过一个vip域名,ns****指向了某台hadoop机器的中心机,翻过来看这个问题才想到不是由于打入了错误的hdfs-site.xml文件,而是环境变量没有加入Hadoop的conf文件。

    修改启动脚本为:

java -Xmx256m -Ddruid.realtime.specFile=examples/wikipedia/wikipedia_realtime_kafka.spec -Duser.timezone=UTC -Dfile.encoding=UTF-8 -classpath config/_common:config/realtime:$HADOOP_HOME/etc/hadoop:lib/* io.druid.cli.Main server realtime

    启动后一切正常。经验,Hadoop周边系统一定要加好CLASSPATH。

Print Friendly

jiang yu

Leave a Reply