Hadoop运维记录系列(二十)

记录一下spark和pyspark在Zeppelin里面访问lzo文件报错的问题。

由于甲方全球500强极度抠门,死活不愿意加服务器,然后接入的数据源又多,小集群很快就会被撑满,所以没办法,原始日志均采用lzo压缩存储。hadoop和spark都是采用正版Cloudera Manager部署,这方面没有太大问题。在命令行方式下,spark-shell是完全可以直接读取lzo的。但是在Zeppelin里面,由于Zeppelin自己是一套独立的运行环境,不会去尝试获取系统中hadoop或spark的配置,所以,在Zeppelin里面读取lzo文件,YARN的执行container服务器一直报找不到:native-lzo library not available。

val data = sc.textFile("/user/xxx/xxx/ott/xxx_xxx_20170101131042_0000_ott.lzo")
data.take(3)


尝试思考了一下,由于zeppelin是自己独立的运行环境,所以应该是application master执行的命令里不包含spark-lzo的相关配置。于是尝试加入本地lzo库到zeppelin spark的配置里面,按照hadoop执行的原理,作业提交会将作业相关jar包及配置xml封装为container,通过AM分发给各NM执行,结果失败。(zeppelin服务器的hadoop和spark client使用rpm安装,集群使用parcels安装,所以两个环境里lzo库的位置是不同的。)


然后试着删除本地lzo路径,加入集群的lzo库路径进去,问题解决。所以其实执行并不会将本地的依赖库加入到执行container里面,必须指向到真实服务器的路径。而且即使写了真实路径,也不能写本地路径,否则还是会报找不到库文件。


真是个无聊的问题,spark和hadoop怎么配lzo没啥可说的。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值