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。

Kylin安装文档

    最近在接触OLAP相关领域。以下为Kylin安装过程。

    基线版本选用的是0.7.1,github地址是 https://github.com/KylinOLAP/Kylin/tree/0.7.1

    官方安装文档地址是 https://github.com/KylinOLAP/Kylin/wiki/On-Hadoop-CLI-installation.官方binary包地址在首页提供下载。

    Kylin默认使用的是Hadoop 2.2,Hbase 0.98,hive 0.14。binary中打出的jar包全部是基于这些版本。而按照官方安装文档,执行script/package.sh脚本后生成的war包缺少很多页面,所以安装与官方文档略有不同。

    1、下载Kylin源码包,修改pom.xml,将Hadoop版本改为Hadoop 2.4,Hbase改为1.0,Hive改为0.13。

    2、安装npm,在打包过程中会使用

    3、由于Hbase1.0相对于0.98有api改动,会报错,错误为 

Kylin

    修改Kylin代码中的HBaseConnection.class将connection的获取过程改为

    connection =  (ClusterConnection) ConnectionFactory.createConnection(conf); 并修改相应的数据结构。

    4、随后使用script/package.sh打包。打出tomcat部署的war包,位置在/server/target/目录下,将binary包中相应的jar包替换为打出的jar包,主要是以kylin开头的所有jar包

    5、启动tomcat前首先修改hadoop classpath 将$HADOOP_HOME/etc/hadoop/hadoop-env.sh 中capacity jar包去掉,否则kylin启动时会读取hadoop环境,去获取jar包,缺少jar包而无法启动

    6、修改conf/kylin_job_conf.xml,作为任务的通用模板,其中加入rm地址,用于http获取job信息

    <property>

        <name>yarn.resourcemanager.webapp.address</name>

        <value>yz543.hadoop.data.sina.com.cn:9008</value>

    </property>

    7、在跑任务之前需要重新编译hcatalog项目,位置在hive源码包中hcatalog目录下,首先修改hive pom.xml,修改以下两行

    <hadoop-23.version>2.4.0</hadoop-23.version>

    <hbase.hadoop2.version>1.0.0</hbase.hadoop2.version>

    在hcatalog目录下,mvn打包 mvn clean package -DskipTests -Phadoop-2,将hive-catalog*.jar 除了test以外的分发到集群中各个节点,同时分发hive-exec-0.13.0.jar和hive-metastore-0.13.0.jar包。用于mr任务使用。

    8、在Kylin的服务器上加入KYLIN_HOME,PATH等环境变量

    export KYLIN_HOME=/usr/local/Kylin-0.7.1

    export PATH=$KYLIN_HOME/bin:$PATH

    9、需要修改Kylin的启动脚本bin/find-hive-dependency.sh

    10、启动kylin kylin.sh start

    停止kylin  kylin.sh stop