native替换本地库
Flume 数据收集_注意事项
1、 hadoop 集群与 flume 集群单独部署,hdfs 文件系统数据存放目录为:hdfs://cluster1 /flume/%Y%m%d,flume 数据收集
的时候能否识别多 NameNode 对外提供的访问路径 cluster1?
1) 无法找到 hdfs,比如 cluster1 访问地址
解决办法:将 hdfs 相关配置文件放到,flume 安装目录下的 conf 目录中
2)flume 集群无法访问 hadoop 集群
解决办法:在 flume 节点的 hosts 文件中增加 hadoop 集群的 ip 配置
2、 课程中使用 Spooling Directory Source 只监控目录文件的变更,而不监控日志文件内容的变更。Spooling Directory Source
支持追加,是指不断的追加文件,也就是文件个数增加,而不是单个文件内容的增加。
3、 flume 目前不支持递归读取目录下的文件,我们一般将产生日志目录/log 与监控目录/flume 分开。
解决办法:通过定时的脚本程序将日志目录/log 新产生的日志,copy 到/flume 监控目录下,从而完成日志的收集
4、 我们通过脚本将日志文件复制到监控目录的时候,cp 大文件会抛出异常,这个是因为 copy 到 spoolDir 下的文件不可以被修
2
改所致
解决办法:使用 scp 或者 cp 备份文件,然后将文件 mv 进 spoolDir 下。还可以使用后缀名正则配合,先拷贝进去.tmp 的文
件,等待 copy 完成后,重命令该文件。
5、 Flume 收集数据的时候,每行数据的最大长度是 2048 个字节,如果我们收集的每行数据超过这个长度该如何处理?
解决办法:通过配置:agent1.sources.spool-source1.deserializer.maxLineLength = 10240,增加每行数据的长度。
6、 我们为什么使用 snappy 压缩?hadoop 本身不支持 snappy 压缩,需要安装,那么该如何安装 snappy?
答:压缩率合理,高速的压缩速度,支持 hadoop native 本地库。
通过 hadoop 源码编译,安装 snappy 并生成 hadoop native 本地库。
安装步骤:
yum -y install gcc-c++
安装 maven
tar -zxvf apache-maven-3.3.3-bin.tar.gz//解压
mv apache-maven-3.3.3 maven//修改名称
3
vi /etc/profile //添加环境变量
MAVEN_HOME=/usr/java/maven
PATH=$MAVEN_HOME/bin:$PATH
export MAVEN_HOME
保存退出
source /etc/profile//使文件生效
mvn –v//查看 maven 版本
安装 ProtocolBuffer
tar -zxvf protobuf-2.5.0.tar.gz
mv protobuf-2.5.0 protobuf
cd protobuf
./configure --prefix=/usr/local/protobuf
make
4
make check
make install
vi /etc/profile//添加环境变量
PROTOBUF_HOME=/usr/local/protobuf
PATH=$PROTOBUF_HOME/bin:$PATH
export PROTOBUF_HOME
保存退出
source /etc/profile//使文件生效
protoc –version 查看版本号
安装 cmake
yum -y install cmake
zlib 安装
yum -y install zlib
5
openssl devel
yum -y install openssl-devel
安装 snappy
tar -zxvf snappy-1.1.3.tar.gz
mv snappy-1.1.3 snappy
cd snappy
./configure
make
make install
编译 hadoop-2.2.0-src 源码
tar –zxvf hadoop-2.2.0-src.tar.gz
cd hadoop-2.2.0-src
mvn package -Pdist,native -DskipTests -Dtar -Dbundle.snappy -Dsnappy.lib=/usr/local/lib
6
hadoop-2.2.0-src/hadoop-dist/ target 在该目录找到编译后的 hadoop jar 包,然后使用解压后的 native 本地库进行替换
hadoop checknative –a 检查本地库是否安装成功
修改 hadoop 配置
修改 hadoop-env.sh
export HADOOP_HOME=/usr/java/hadoop 安装目录
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native
修改配置 core-site.xml
<property>
<name>io.compression.codecs</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>
如果 MR 中间结果需要使用 snappy 压缩,修改 mapred-site.xml
<property>
7
<name>mapreduce.map.output.compress</name>
<value>true</value>
</property>
<property>
<name>mapreduce.map.output.compress.codec</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>