CentOS5.5下scribe写入数据到HDFS配置方法

1按照CentOS 5.5 下配置Hadoop 0.21单节点 一文中的方法配置Hadoop

2编译scribe,支持hdfs

   2.1下载thrift,libevent,boost等库,可以都下载最新版本,基本上都是make & make install

   2.2下载最新版scribe-2.2,之前在网上看到说scribe有很多bug,必须在当前开发版本才能写入HDFS,试了好久没成功,也以为确实是代码的问题,现在发现不是这个问题,直接下载 该版本

   2.3在scribe源码包里面bootstrap.sh,按照文档上的说法是可以一步到位的即:./configure --with-hadooppath=/usr/local/hadoop --enable-hdfs CPPFLAGS="-I/usr/local/java/include -I/usr/local/java/include/linux" LDFLAGS="-ljvm -lhdfs",但是我的机器上面这样不行,因此直接./configure --enable-hdfs,然后修改相应的Makefile(src目录下面的),将以下字段修改如下:

CPPFLAGS = -I/usr/local/lib/jdk1.6.0_23/include -I/usr/local/lib/jdk1.6.0_23/include/linux

上面的JDK路径以机器上面的实际路径为准。

   2.4拷贝hadoop-0.21.0/hdfs/src/c++/libhdfs/hdfs.h文件到scribe/src目录下,libhdfs其实就是通过JNI让C/C++调用HDFS接口,在hadoop-0.21.0/hdfs/src/c++/libhdfs目录下面执行如下操作

./configure --enable-shared JVM_ARCH=tune=k8 --prefix=`pwd`/nativelib

./make install

这时会在nativelib/lib下面生成5个文件,将其都拷贝到/usr/local/lib下面,执行ldconfig

  2.5编译scribe,在scribe/src目录下面执行./make,即可生成scribed文件,

  2.6按照scribe/examples目录下面的配置文件写个简单的支持HDFS的配置文件simple_hdfs_example.conf:

    port=1463
    max_msg_per_second=2000000
    check_interval=1
    max_queue_size=100000000
    num_thrift_server_threads=2


    # DEFAULT - write all messages to hadoop
    <store>
     category=default

     target_write_size=20480

    type=file
    fs_type=hdfs
    file_path=hdfs://localhost:9000/scribedata
    create_symlink=no
    use_hostname_sub_directory=yes
    base_filename=thisisoverwritten
    max_size=1000000000
    rotate_period=100s
    add_newlines=1
   </store>

   <store>
    category=qt

    target_write_size=20480

    type=file
    fs_type=hdfs
    file_path=hdfs://localhost:9000/scribedata
    create_symlink=no
    use_hostname_sub_directory=yes
    base_filename=thisisoverwritten
    max_size=1000000000
    rotate_period=100s
    add_newlines=1
   </store>
 2.7到处libhdfs库需要使用的jar路径即CLASSPATH,具体需要哪些不太清楚,官方文档上建议将hadoop/lib目录下所有的库的加入,下面是我导出的:

export CLASSPATH=$CLASSPATH:/xxx/hadoop-0.21.0/hadoop-common-0.21.0.jar:/xxx/hadoop-0.21.0/hadoop-hdfs-0.21.0.jar:/xxx/hadoop-0.20.1+152/contrib/scribe-log4j/hadoop-0.20.1+152-scribe-log4j.jar:/xxx/hadoop-0.21.0/lib/commons-logging-1.1.1.jar:/xxx/hadoop-0.21.0/lib/commons-logging-api-1.1.jar:/xxx/hadoop-0.21.0/lib/core-3.1.1.jar:/xxx/hadoop-0.21.0/lib/log4j-1.2.15.jar

XXX你懂的。

 2.8可以执行scribe了, ./scribed ../examples/simple_hdfs_example.conf

 2.9通过发送工具发送日志到scribe,echo "Successful write data to HDFS,I am qiutao" | ./scribe_cat qt

 3.10在hadoop目录下面执行bin/hadoop dfs -lsr /scribedata即可看到相应的数据生成了。

 

 

整个过程确实比较繁琐,尤其要注意2.4,一定要在自己机器上面编译libhdfs库,否则会出现一些莫名其妙的问题,基本上都是抛出的java异常,在这个上面吃了不少亏,终于在自己机器上面写入HDFS了,一步步的也学到了不少东西,留作以后备用。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值