数仓搭建(一)

该博客详细记录了搭建分布式大数据平台的过程,包括Hadoop的安装、LZO压缩配置、Zookeeper集群安装、Flume与Kafka的部署。通过自定义脚本实现了文件分发与命令执行的自动化,确保了集群的一致性。同时介绍了Flume拦截器的配置,展示了第一层数据采集通道的建立。
摘要由CSDN通过智能技术生成

数仓搭建(一)

一、准备

1.安装hadoop

见完全分布式运行模式

2.在hadoop103的bin目录中添加2个脚本

vim xsync(分发文件用)

vim xcall(在三台虚拟机上都执行同一个指令,并且将情况打印到控制台)

xsync:

!/bin/bash
#验证参数
if(($#!=1))
the
   echo 请传入要分发的单个文件!
   exit;
fi
#获取分发文件的绝对路径
dirpath=$(cd -P `dirname $1`; pwd)
filename=$(basename $1)
echo "要分发的文件路径是:$dirpath/$filename"
#获取当前的用户名
user=$(whoami)
#分发,前提是集群中的机器都有当前分发文件所在的父目录
for((i=102;i<=104;i++))
do
 echo -----------------------hadoop$i---------------------
 rsync -rvlt $dirpath/$filename $user@hadoop$i:$dirpath

done

xcall:

#!/bin/bash
#验证参数
if(($#==0))
then
        echo 请传入要执行的命令!
        exit;
fi

echo "要执行的命令是:$@"

#批量执行
for((i=102;i<=104;i++))
do
        echo -----------------------hadoop$i---------------------
        ssh  hadoop$i $@
done

二、hadoop LZO压缩

1.解压

将编译好后的hadoop-lzo-0.4.20.jar 放入hadoop-3.1.3/share/hadoop/common/

[guochao@hadoop102 common]$ pwd
/opt/module/hadoop-3.1.3/share/hadoop/common
[guochao@hadoop102 common]$ ls
hadoop-lzo-0.4.20.jar
2.同步
[guochao@hadoop102 common]$ xsync hadoop-lzo-0.4.20.jar
3.修改配置

core-site.xml增加配置支持LZO压缩


<configuration>
<property>
<name>io.compression.codecs</name>
<value>
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.BZip2Codec,
org.apache.hadoop.io.compress.SnappyCodec,
com.hadoop.compression.lzo.LzoCodec,
com.hadoop.compression.lzo.LzopCodec
</value>
</property>

<property>
    <name>io.compression.codec.lzo.class</name>
    <value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
</configuration>
4.同步
[guochao@hadoop102 hadoop]$ xsync core-site.xml

三、Zookeeper安装

1.传输

用 XShell 文件传输工具将 zookeeper-3.4.10导入到 opt 目录下面的 software 文件夹下面

2.解压

解压到/opt/module/

[guochao@hadoop102 software]$ tar -zxvf zookeeper-3.4.10 -C /opt/module/
3.创建datas目录

进入zookeeper中创建目录datas

[guochao@hadoop102 module] cd /opt/module/zookeeper-3.4.10/
[guochao@hadoop102 zookeeper-3.4.10]$mkdir datas
4.改名

进入zookeeper中的conf中将zoo_sample.cfg 改名为 zoo.cfg

[guochao@hadoop102 conf]$ mv zoo_sample.cfg zoo.cfg
5.编辑zoo.cfg

将datadir改为data的地址

/opt/module/zookeeper-3.4.10/datas

在空白处添加

server.102=hadoop102:2888:3888
server.103=hadoop103:2888:3888
server.104=hadoop104:2888:3888
6.创建myid文件

在datas文件中创建myid文件输入102

7.分发
[guochao@hadoop102 conf]$ xsync zoo.cfg

之后在其他虚拟机上更改myid

8.编写zookeeper的启动脚本

在hadoop102的/home/guochao/bin目录下创建脚本

[guochao@hadoop102 bin]$ vim zk.sh

在脚本中编写如下内容

#! /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
};;
"status"){
	for i in hadoop102 hadoop103 hadoop104
	do
		ssh $i "/opt/module/zookeeper-3.4.10/bin/zkServer.sh status"
	done
};;
esac
#!/bin/bash
if(($#!=1))
then
	echo 请输入start或stop或status!
	exit;
fi

if [ $1 = start ] || [ $1 = stop ] || [ $1 = status ]
then
	xcall zkServer.sh $1
else
	echo 请输入start或stop或status!
fi

增加脚本执行权限

[guochao@hadoop102 bin]$ chmod 777 zk.sh

Zookeeper集群启动脚本

[guochao@hadoop102 module]$ zk.sh start

Zookeeper集群停止脚本

[guochao@hadoop102 module]$ zk.sh stop

四、Flume安装

1.解压
2.分发

xsync

五、Kafka安装

1.解压
[guochaao@hadoop102 software]$ tar -zxvf kafka_2.11-0.11.0.2.tgz -C /opt/module/
2.修改配置文件

将delete的注释解开

将log.dirs的地址改为:

/opt/module/kafka/datas

在到下面将zookeeper.connect改为

hadoop102:2181,hadoop103:2181,hadoop104:2181
3.分发

退回module将kafka分发

Zookeeper要在kafka前启动

4.编写启动脚本kf

1)在/home/atguigu/bin目录下创建脚本kf.sh

[guochao@hadoop102 bin]$ vim kf.sh

在脚本中填写如下内容

#! /bin/bash

case $1 in
"start"){
        for i in hadoop102 hadoop103 hadoop104
        do
                echo " --------启动 $i Kafka-------"
                # 用于KafkaManager监控
                ssh $i "export JMX_PORT=9988 && /opt/module/kafka_2.11-0.11.0.2/bin/kafka-server-start.sh -daemon /opt/module/kafka_2.11-0.11.0.2/config/server.properties "
        done
};;
"stop"){
        for i in hadoop102 hadoop103 hadoop104
        do
                echo " --------停止 $i Kafka-------"
                ssh $i "/opt/module/kafka_2.11-0.11.0.2/bin/kafka-server-stop.sh stop"
        done
};;
esac

2)增加脚本执行权限

[guochao@hadoop102 bin]$ chmod 777 kf.sh

3)kf集群启动脚本

[guochao@hadoop102 module]$ kf.sh start

4)kf集群停止脚本

[guochao@hadoop102 module]$ kf.sh stop

六、拦截器,第一层采集通道

1.创建目录myagents

进入Hadoop102的flume中创建目录myagents

[guochao@hadoop102 apache-flume-1.7.0-bin]$ mkdir myagents
2.在myagents中创建test.conf文件
[guochao@hadoop102 myagents]$ vim test.conf

输入

#a1是agent的名称,a1中定义了一个叫r1的source,如果有多个,使用空格间隔
a1.sources = r1
a1.sinks = k1
a1.channels = c1
#组名名.属性名=属性值
a1.sources.r1.type=TAILDIR
a1.sources.r1.filegroups=f1 
#读取/tmp/logs/app-yyyy-mm-dd.log ^代表以xxx开头$代表以什么结尾 .代表匹配任意字符
#+代表匹配任意位置
a1.sources.r1.filegroups.f1=/tmp/logs/^app.+.log$
#JSON文件的保存位置
a1.sources.r1.positionFile=/opt/module/flume/test/log_position.json

#定义拦截器
a1.sources.r1.interceptors = i1
a1.sources.r1.interceptors.i1.type = com.atguigu.dw.flume.MyInterceptor$Builder


#定义sink
a1.sinks.k1.type=logger

#定义chanel
a1.channels.c1.type=memory
a1.channels.c1.capacity=1000

#连接组件 同一个source可以对接多个channel,一个sink只能从一个channel拿数据!
a1.sources.r1.channels=c1
a1.sinks.k1.channel=c1
3.分发
[guochao@hadoop102 myagents]$ xsync test.conf 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值