使用flume问题总结1——搭建flume+测试Syslog source
来源:互联网 发布:淘宝号可以改名字吗 编辑:程序博客网 时间:2024/06/05 20:15
搭建flume
- 先安装JDK:参考http://wenku.baidu.com/link?url=QnE9lgoCkS2OoILGeHim7uonsth5LwiGB3IWKOnNirSE6qEOaNgdW4-DDWR2XKKoX0X8aLIbjDD0i_z4BeXh4VA_AEScZhrxvz_9BucO-Ze
- 下载flume,目前最新版本1.6.0:链接http://flume.apache.org/download.html
- 安装flume:参考http://wenku.baidu.com/link?url=LS_fM5ifOAiHumoqaZUd9G42P9vAlvePdsQsdE7FcniaGHTMuWt1LJ5SZaA6yQBq3p9jxtp9lt81n39627kNT8fxFx7EGK8WfFS_mUt5WGG
- 我的环境变变量的设置:文件/etc/profile
- if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then
- INPUTRC=/etc/inputrc
- fi
- export JAVA_HOME=/opt/jdk/jdk1.6.0_45
- export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
- export CLASSPATH=.:/opt/jdk/jdk1.6.0_45/lib:/opt/jdk/jdk1.6.0_45/jre/lib:$CLASSPATH
- export FLUME_HOME=/usr/local/flume
- export PLUME_LOG_DIR=$FLUME_HOME/log
- export PATH=$PATH:$FLUME_HOME/bin
- export KAFKA_HOME=/usr/local/kafka
- export PATH=$PATH:$KAFKA_HOME/bin
- export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
测试
- 链接中有很多测试案例,可用于测试flume安装是否成功,并且初步了解各种source的使用方式以及区别:http://www.aboutyun.com/thread-8917-1-1.html
- 上面博文中测试用例都是用命令行的方式实现的,实际开发中我们需要编写自己的client,与flume source对接
Syslog source
- 这篇博文中用使用Java编写了一个客户端(创建socket客户端)之后发送数据,flume配置的source类型为syslog,测试可以运行。链接:http://blog.csdn.net/shuijinglianyi/article/details/8492415
- 由于业务需求,我的客户端需要用C语言实现。所以尝试着用C编写了一个类似的socket client,但是运行不成功。刚开始以为是跨语言的问题,所以用java编写了socket 服务端与我的C client通信,运行成功,说明不是语言问题。(Java与C之间的socket通信,参考:http://blog.csdn.net/yutianzuijin/article/details/24807417)
- 仔细检查后才明白是发送的消息格式不正确,下面是C语言的client代码。
- 之前发送的消息之前没有加<4>,然后就发送不成功。猜测:<4>应该是flume event要求的一个固定字段。
- 由于刚开始接触flume,event的格式还不是很明白,关于为什么消息前面必须加<4>,在下一篇博文中说明。
- #include <stdio.h>
- #include <stdlib.h>
- #include <arpa/inet.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <unistd.h>
- #include <netinet/in.h>
- #include <netdb.h>
- #include <string.h>
- #include <errno.h>
- int main()
- {
- int sock_id;
- char send_buf3[] = "<4>helloworld\nnihao\n"; // 要发送给服务器的信息
- char server_addr[16] = "127.0.0.1";//服务器IP地址
- int server_port = 5496;//服务器分配的端口号
- struct sockaddr_in servaddr;//服务器的地址信息
- bzero(&servaddr,sizeof(servaddr));
- //读取IP地址
- servaddr.sin_family = AF_INET ;
- servaddr.sin_addr.s_addr = inet_addr(server_addr);
- servaddr.sin_port = htons(server_port);
- //创建TCP流式socket
- sock_id = socket(AF_INET,SOCK_STREAM,0);
- if(sock_id == -1){
- perror("socket() failed");
- return -1;
- }
- //与服务器建立连接
- if(connect(sock_id,(struct sockaddr *)&servaddr,sizeof(servaddr)) != 0){
- perror("connect() failed");
- return -1;
- }
- int send_len = send(sock_id,send_buf3,100,0);
- //printf("send_len=%d\n",send_len);
- if(send_len < 0){
- perror("send() failed");
- }
- printf("send_len=%d\n",send_len);
- close(sock_id);
- return 0;
- }
0 0
- 使用flume问题总结1——搭建flume+测试Syslog source
- flume常用source问题总结
- flume常用source问题总结
- Flume使用-问题总结
- 使用flume问题总结2——flume event的简单理解
- Flume学习02 — Source
- Flume搭建测试
- 使用flume问题总结3——一个使用flume拦截器和选择器的简单实例
- flume source、sink、Channels测试
- Flume Source
- Flume Source
- flume安装及source、sink、Channels测试
- flume+Hbase搭建问题详解
- Flume搭建
- flume搭建
- flume搭建
- 【Flume】【源码分析】深入flume-ng的三大组件——source,channel,sink
- 【Flume】【源码分析】深入flume-ng的三大组件——source,channel,sink
- OWC 绘制3D柱状图
- php end()函数与current()函数
- Android实战简易教程<二十六>(基于ViewPager实现微信页面切换效果)
- 内核中的list
- Oracle数据库的相关术语
- 使用flume问题总结1——搭建flume+测试Syslog source
- 处理千万级以上的数据提高查询速度的方法 ...
- 网站渗透测试
- 算法之每日一题:哥德巴赫猜想
- classLoader和javassist
- 类的加载(后知后觉)
- PRML第一章_易混淆概念-先验后验&生成判别&分类回归
- hive导出查询结果到本地文件
- 黑马程序员---Java基础加强---JDK1.5新特性