谈 Kylin1.6 streaming kafka cube build 成功过程中遇到的坑

坑太多    --写在片首语

看着Kylin官网(http://kylin.apache.org/docs16/tutorial/cube_streaming.html)里的轻描淡写,似乎只要一步步按着它的步骤来做,就可以很快跑通并得到期待的果子 。但,然并卵。。。这次的实践让我很清醒地了解到, 在开源的世界里,真的是版本太多,bug太多,坑太多。。。

如果仅仅是阅读了文档一百遍,而并未去实践,那么也许仅仅阅读理解水平会提高不少。为了走完这一遍操作,得到期待的结果,居然cost 10 days! 不过也可能是作为刚接触开源平台1个月的我问题分析能力欠缺!

坑1 :官方文档没有重点显示说明已更最新!文档中的命令并不适用于旧版本的Kylin(cost 2 days)

我本次实践是从12月初开始,当时公司安装的还是Kylin1.5。但也恰好是这几天,最新的kylin1.6发布了!很自然的 官方文档(http://kylin.apache.org/docs16/tutorial/cube_streaming.html)也被 更新成了最新版本。但是,文档的开头并没有很明显地提醒说明此点!由于Kylin1.6在Kylin1.5的基础上对Streaming的支持作了很大的改动,例如build streaming cube 命令的改变(kylin1.5 中的 sh命令被deprecated )。所以很明显 , 当我用Kylin1.6的命令方式去在安装的Kylin1.5上执行时,总是报些NoSuchMethod的错误!好吧,还好对这个错误有点感觉,隐约感觉到这是因为版本不兼容的原因。从发现问题到升级到Kylin1.6,花了约2天的时间吧!

不同版本的Kylin build streaming cube 的命令的区别:
Kylin1.6:
curl -X PUT --user ADMIN:KYLIN -H "Content-Type: application/json;charset=utf-8" -d ‘{ "sourceOffsetStart": 0, "sourceOffsetEnd": 9223372036854775807, "buildType": "BUILD"}‘ http://192.168.18.12:7070/kylin/api/cubes/StreamingCube12/build2
说明:我正是用此命令对着安装的kylin1.5来运行,始终报错,使我迷糊了N久!
Kylin1.5:
$KYLIN_HOME/bin/streaming_build.sh STREAMING_CUBE 300000 0

坑 2 : 官方文档仅能供参考,不可奉为真经!太认真你就输了!(cost 1 days)
如下,我从官网copy过的命令中用到的startSourceOffset 和 endSourceOffset的名称,运行过程中却直接报错。仔细比较命令中的名称和CLI中报错提示的名称sourceOffsetStart和sourceOffsetEnd可以发现细微的区别。由此,官网中的文档也仅供参考,不可迷信!如果 自己太认真,你就输了!(关于官方文档内容这块的
issue,在我清理维护Kylin的HBase文件的过程中还发现了个bug,详见 https://issues.apache.org/jira/browse/KYLIN-2261)

从CLI中的截图报错:

坑3 : Kylin1.6 + Kafka1.0才可以Work , Kylin1.6 + Kafka0.9 有Bug (cost 2 days)

也许是因为前面的问题有点心急,也许是因为习惯性地忽略文档的非实践操作部分。所以直接从操作步骤开始重新动手干活了。但最终提交Curl命令后,又直接报如下JavaLangNullPointer或NoSuchMethodError的错误,还TMD在这俩错误中随机出现一个!简直就是看得头大 !!!不得已, 提交了个issue给Kylin官方Commnuity(https://issues.apache.org/jira/browse/KYLIN-2262?filter=-2)。官方reproduce了此Error,也基本确认了版本不兼容的事实。这个过程,又差不多耗了我两天时间吧!与官方的这种沟通总是这么不够效率,不过好在是寻找答案的方向没搞错!

坑4:集群资源问题 (cost 2 days)
公司工作用的CDH不能贸然升级Kafka组件,迫于领导建议,我不得不自己搭建环境。由于目前也没有其它的CDH测试环境可用,所以就先凑合着用个人电脑(配置还算可以 12G+四核+I7)下载了个CDH 的ovf虚拟机来做接下来的测试验证。一切准备就绪,到最后一步提交build cube时,又直接报错
java.lang.InterruptedException (https://issues.apache.org/jira/browse/KYLIN-2278)!

无语!提交issue后隔天了却无人问津。只能猜测是因为本机配置太Low,不得不还是用公司的的棒一点的机器 ,重头搭建CDH环境并安装Kylin1.6 + Kafka1.0了。

坑5:由于Hadoop莫名(本来是三个机器的集群,但只有一个机器可以用,所以工程师又改成了单节点模式)的原因,build cube的MR job 一直处于pending状态。

心里凉凉的,为什么每一步都不顺利?依然提交了个issue(https://issues.apache.org/jira/browse/KYLIN-2281),却依旧是空等。当然在等待的过程中也与工程师商议,决定给服务器重新安装Linux,消除一切可能的系统环境问题,重新安装CDH5.7+Kylin1.6+Kafka1.0 . (cost 2 days)

如下图1,是在kylin的Monitor页面看到的job状态。NND,Duration居然这么久,但Progress还是0.00%。

如下图2,在hadoop的监控页面,可以看到它处于pending过程中,虽然我反复删除-创建 了多次

6.经过辗转,最终得到了崭新的环境,并同时参照文档(https://kyligence.gitbooks.io/kap-manual/content/zh-cn/quickstart/quickstart_cdh.cn.html),对YARN做了部分设置如下,

然后提交命令,最终,终于看到了期待的结果!!!(cost 1 Day)

命令:

curl -X PUT --user ADMIN:KYLIN -H "Content-Type: application/json;charset=utf-8" -d ‘{ "sourceOffsetStart": 0, "sourceOffsetEnd": 9223372036854775807, "buildType": "BUILD"}‘ http://192.168.18.62:7070/kylin/api/cubes/StreamingCube32/build2

Thanks God!!!

时间: 2024-08-03 00:38:19

谈 Kylin1.6 streaming kafka cube build 成功过程中遇到的坑的相关文章

kafka 并发数配置过程中踩到的坑 InstanceAlreadyExistsException

2017-07-05 13:09:15.460 [kafka_spout:7-MultipleThreadSpoutExecutors] WARN o.a.kafka.common.utils.AppInfoParser - Error registering AppInfo mbean javax.management.InstanceAlreadyExistsException: kafka.consumer:type=app-info,id=gx-test-20170629 at com.

kafka spark streaming例子——TODO 没有成功

python3+spark2.1+kafka0.8+sparkStreaming python代码: import time from pyspark import SparkContext from pyspark.streaming import StreamingContext from pyspark.streaming.kafka import KafkaUtils from operator import add sc = SparkContext(master="local[1]&

第99课:使用Spark Streaming+Kafka实战对论坛网站动态行为的多维度分析及java.lang.NoClassDefFoundError问题解决完整内幕版本解密

第99课:使用Spark Streaming 实战对论坛网站动态行为的多维度分析 /* 王家林老师授课http://weibo.com/ilovepains  每天晚上20:00YY频道现场授课频道68917580*/ /** * *第99课:使用Spark Streaming 实战对论坛网站动态行为的多维度分析 * 论坛数据自动生成代码,该生成的数据会作为Producer的方式发送给Kafka,然后SparkStreaming程序会从 * Kafka中在线Pull到论坛或者网站的用户在线行为信

浅谈分布式消息技术 Kafka

http://www.linkedkeeper.com/1016.html Kafka的基本介绍 Kafka是最初由Linkedin公司开发,是一个分布式.分区的.多副本的.多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志.访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目. 主要应用场景是:日志收集系统和消息系统. Kafka主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化

浅谈分布式消息技术 Kafka(转)

一只神秘的程序猿. Kafka的基本介绍 Kafka是最初由Linkedin公司开发,是一个分布式.分区的.多副本的.多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志.访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目. 主要应用场景是:日志收集系统和消息系统. Kafka主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能.

搞懂分布式技术21:浅谈分布式消息技术 Kafka

搞懂分布式技术21:浅谈分布式消息技术 Kafka 浅谈分布式消息技术 Kafka 本文主要介绍了这几部分内容: 1基本介绍和架构概览 2kafka事务传输的特点 3kafka的消息存储格式:topic和parition 4副本(replication)策略:主从broker部署和partition备份,以及选主机制 5kafka消息分组,通过comsumergroup实现主体订阅 6push和pull的区别,顺序写入和消息读取,零拷贝机制 Kafka的基本介绍 Kafka是最初由Linkedi

spark streaming kafka example

// scalastyle:off println package org.apache.spark.examples.streaming import kafka.serializer.StringDecoder import org.apache.spark.SparkConf import org.apache.spark.streaming._ import org.apache.spark.streaming.kafka._ import org.apache.spark.stream

C#如何将Build成功的程序集Copy到上一层目录

C#Build成功后,会把Build好的程序集放到bin\Debug的目录下,如何将目录放到特定目录 例如放到bin目录下,copy "$(TargetFileName)" "$(TargetDir).."

Spark streaming + Kafka 流式数据处理,结果存储至MongoDB、Solr、Neo4j(自用)

KafkaStreaming.scala文件 import kafka.serializer.StringDecoder import org.apache.spark.SparkConf import org.apache.spark.streaming.{Seconds, StreamingContext} import org.apache.spark.streaming.kafka.{KafkaManagerAdd, KafkaUtils} import org.json4s.Defau