如何让Apache Kylin在Azure HDInsight上识别HADOOP_CONF_DIR
环境信息
- 集群类型:HDInsight Hadoop 3.3(HDI 5.1)
- 操作系统:Ubuntu边缘节点
- Kylin版本:5.0.0
- Java版本:openjdk 1.8.0_382
- 确认存在的Hadoop配置路径:
/etc/hadoop/5.1.7.7/0/
已执行操作
- 下载并解压Kylin:
wget https://github.com/apache/kylin/releases/download/kylin-5.0.0/apache-kylin-5.0.0-bin.tar.gz tar -zxvf apache-kylin-5.0.0-bin.tar.gz cd apache-kylin-5.0.0-bin - 运行环境检查脚本:
cd bin ./check-env.sh - 设置Hadoop配置路径:
export HADOOP_CONF_DIR=/etc/hadoop/5.1.7.7/0/
问题现象
设置HADOOP_CONF_DIR后,Kylin启动日志中无该路径的相关记录,且报错无法找到部分Hadoop配置项,无法正常读取HDInsight的Hadoop配置。
解决方案
1. 把环境变量写入Kylin启动脚本
临时export的环境变量仅在当前会话有效,需要将其固化到Kylin的启动脚本中:
编辑Kylin目录下的bin/kylin.sh,在脚本开头添加以下内容:
export HADOOP_CONF_DIR=/etc/hadoop/5.1.7.7/0/ export HADOOP_HOME=/usr/hdp/current/hadoop-client export YARN_CONF_DIR=$HADOOP_CONF_DIR export HDFS_CONF_DIR=$HADOOP_CONF_DIR
HDInsight中Hadoop客户端默认路径为/usr/hdp/current/hadoop-client,需提前确认该路径存在。
2. 调整Hadoop配置目录的权限
HDInsight的Hadoop配置目录部分文件权限严格,执行以下命令确保Kylin能读取配置:
chmod -R 755 /etc/hadoop/5.1.7.7/0/
同时确认core-site.xml、hdfs-site.xml、yarn-site.xml等核心配置文件的所有者和组权限允许root读取。
3. 修改Kylin配置文件指定Hadoop路径
编辑Kylin目录下的conf/kylin.properties,添加或修改以下配置项:
kylin.env.hadoop-conf-dir=/etc/hadoop/5.1.7.7/0/ kylin.env.hbase-conf-dir=/etc/hbase/5.1.7.7/0/
HDInsight的HBase配置路径通常与Hadoop配置路径结构一致,需替换为实际存在的路径。
4. 验证环境变量加载状态
启动Kylin前,执行以下命令确认环境变量已正确加载:
echo $HADOOP_CONF_DIR echo $HADOOP_HOME
重新运行./check-env.sh,检查脚本输出中是否正确识别到Hadoop配置路径。
5. 适配HDInsight的存储端点
HDInsight依赖Azure存储或ADLS作为底层存储,需确保Kylin配置与集群存储地址匹配:
查看core-site.xml中的fs.defaultFS配置项,同步修改kylin.properties:
kylin.storage.url=hdfs://<你的HDInsight集群名称>/
6. 同步Hadoop客户端JAR到Kylin目录(可选)
部分场景下Kylin需要依赖HDInsight的Hadoop客户端JAR,可执行以下命令同步:
cp /usr/hdp/current/hadoop-client/lib/*.jar apache-kylin-5.0.0-bin/lib/
注意先备份Kylin原lib目录中的Hadoop相关JAR,避免版本冲突。
内容的提问来源于stack exchange,提问作者D.Schinella

