今天在编写了flume采集日志脚本,kafka-hbase-flume集成脚本之后,打算看看数据流通不通,能不能把flume采集到的数据打入hbase,打入卡夫卡。

        结果就犯了个低级错误浪费了很多时间。

        看以下错误和代码:permission denied。

        要知道,这个问题之前应该碰到过,我记得应该有可能是权限问题,比如指定文件是root系统文件,而你在Hadoop用户下进行,或者就是该目录或文件不存在。

        因为这是flume采集将log打入logs_home,把pid也打入logs_home,我想着这个文件没有问题啊,虽然不存在但是这个是会自动生成的,并不存在文件不存在的问题,然后再想,这个文件应该是在hadoop用户下进行的也没有权限问题,要用的shell脚本已经被我添加了用户权限,肯定可以用的。

        我就在那里查资料,和我的问题都不搭边,最终,在我一遍又一遍的查看两个shell脚本之后,我终于发现了这个低级错误。

[hadoop@hadoop02 shell]$ bin/start_flume_hadoop02.sh 
/home/hadoop/shell/bin/common.sh: line 3: /home/hadoop/shell: Is a directory
bin/start_flume_hadoop02.sh: line 11: /flume_hadoop02.pid: Permission denied
bin/start_flume_hadoop02.sh: line 7: /flume_hadoop02.log: Permission denied

在start_flume_hadoop01.sh中 是有用到common.sh 中的目录地址的,其中有这么一句代码

. ~/shell/bin/common.sh

这样 就可以调用common.sh中设置的各个home目录,比较方便清晰,不会有大量的直接目录。但我把common.sh中的bin_home和conf_home、logs_home都被我写成了_name,导致我的shell脚本找不到该目录,我立马改掉了,结果马上就可以用了,数据全部打通,kafka-hbase-flume

 

 

#切换到当前目录的父目录
home= $(cd `dirname $0`; cd ..; pwd)
bin_home=$home/bin
conf_home=$home/conf
logs_home=$home/logs
lib_home=$home/lib
#kafka的根目录
kafka_home=/home/hadoop/app/kafka_2.11-0.9.0.1
#flume的根目录
flume_home=/home/hadoop/app/apache-flume-1.8.0-bin

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐