离线电商数仓学习笔记01-数据采集模块安装02
安装Zookeeper
集群规划
在三个节点上均安装zookeeper
解压安装
配置服务器编号
在/opt/module/zookeeper-3.4.10目录下创建zkData,并在这个目录下创建myid文件,随后在myid文件中添加与节点对应的编号,随后分发到其他节点上。每个节点的id不能重复,必须改成不同
配置zoo.cfg文件
首先重命名/opt/module/zookeeper-3.4.10/conf目录下的zoo_sample.cfg为zoo.cfg,打开cfg文件并添加配置。
在bin目录下创建zookeeper启动停止脚本
#!/bin/bash
case $1 in
"start"){
for i in hadoop102 hadoop103 hadoop104
do
ssh $i "/opt/module/zookeeper-3.4.10/bin/zkServer.sh start"
done
};;
“stop"){
for i in hadoop102 hadoop103 hadoop104
do
ssh $i "/opt/module/zookeeper-3.4.10/bin/zkServer.sh stop"
done
};;
esac
并增加脚本的执行权限 chmod 777 脚本文件名
日志生成
将生成的jar包log-collector-0.0.1-SNAPSHOT-jar-with-dependencies.jar拷贝到hadoop102、服务器上,并同步到hadoop103的/opt/module路径下,
[root@hadoop102 module]$ xsync log-collector-1.0-SNAPSHOT-jar-with-dependencies.jar
并执行jar程序
[root@hadoop102 module]$ java -classpath log-collector-1.0-SNAPSHOT-jar-with-dependencies.jar J1NX1N.AppMain >/opt/module/test.log
可以在/tmp/logs路径下查看生成的日志文件
日志生成脚本
#! /bin/bash
for i in hadoop102 hadoop103
do
ssh $i "java -classpath /opt/module/log-collector-1.0-SNAPSHOT-jar-with-dependencies.jar J1NX1N.AppMain $1 $2 >/opt/module/test.log &"
done
集群时间同步修改脚本
#!/bin/bash
log_date=$1
for i in hadoop102 hadoop103 hadoop104
do
ssh -t $i "sudo date -s $log_date"
done
集群所有进程查看脚本
#! /bin/bash
for i in hadoop102 hadoop103 hadoop104
do
echo --------- $i ----------
ssh $i "$*"
done
安装日志采集Flume
集群规划
我是在hadoop102,hadoop103上布置了日志采集Flume,在Hadoop104上布置的是消费Flume,负责消费来自Kafka的数据。之所以不在三台节点上都安装日志采集Flume,是因为机器性能影响,三台日志采集Flume机器带不动。
Flume的安装比较简单,首先解压jar包(1.7.0),修改apache-flume-1.7.0-bin的名称为flume,进入flume目录下, 将flume/conf下的flume-env.sh.template文件修改为flume-env.sh,并配置flume-env.sh文件
export JAVA_HOME=/opt/module/jdk1.8.0_144
日志采集Flume配置
在/opt/module/flume/conf目录下创建file-flume-kafka.conf文件,并添加如下内容
a1.sources=r1
a1.channels=c1 c2
# configure source
a1.sources.r1.type = TAILDIR
a1.sources.r1.positionFile = /opt/module/flume/test/log_position.json
a1.sources.r1.filegroups = f1
a1.sources.r1.filegroups.f1 = /tmp/logs/app.+
a1.sources.r1.fileHeader = true
a1.sources.r1.channels = c1 c2
#interceptor
a1.sources.r1.interceptors = i1 i2
a1.sources.r1.interceptors.i1.type = J1NX1N.flume.interceptor.LogETLInterceptor$Builder
a1.sources.r1.interceptors.i2.type = J1NX1N.flume.interceptor.LogTypeInterceptor$Builder
a1.sources.r1.selector.type = multiplexing
a1.sources.r1.selector