大数据日志分析相关文章
集群环境搭建常用工具及工具特征
常用工具有hadoop, spark, kafka, flume,简单介绍如下
hadoop——大数据的入门
spark——用于实时计算kafka消息
kafka——分布式消息队列系统,具有高吞吐量,低延迟的特点,可以在线和离线处理
flume——日志采集,并传送数据到kafka
windows安装集群
如需使用Linux的docker进行集群部署,参考这篇文章
系统下载
1 | # 在这里下载的CentOS-7-x86_64-Minimal-2009.iso |
虚拟机安装注意
虚拟机每次重启都自动分配IP?
编辑=》虚拟机网络编辑器=》VM8选择NAT模式=》去掉勾选使用本地DHCP子网IP和NET设置里的网关IP可以改一下(如子网IP为192.168.1.0,网关IP为192.168.1.2),从而可以使用自定义IP
虚拟机标签右键设置=》进入虚拟机设置=》网络适配器=》自定义特定虚拟网络=》选择VMnet8如何克隆多个虚拟机?
虚拟机标签右键管理=》克隆=》创建完整克隆=》虚拟机名称写slave1=》然后保存克隆
环境配置
以下将创建master, slave1, slave2三个服务结点
在普通用户状态下实现root用户操作,避免频繁切换root
折叠代码块BASH 复制代码1
2
3
4
5
6
7
8
9su root
# u是用户,g是用户组,o是其他,a是所有
# +和-用于添加,删除权限,=是直接赋予权限
chmod u+w /etc/sudoers
vi /etc/sudoers
# 可以找到与这个命令相同的示例下添加
# 含义为给easul用户添加root所有命令,且使用的时候不需要输入密码
# 这种配置可用于centos7,其他版本系统可能不同。
easul ALL=(ALL) NOPASSWD: ALL关闭SELinux(安全策略),否则可能会有问题(centos7下)
折叠代码块BASH 复制代码1
2
3sudo vi /etc/sysconfig/selinux
# 注释原有配置,然后添加如下设置
SELINUX=disabledip设置(centos7下)
折叠代码块BASH 复制代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41# 进入网络相关的配置文件目录
cd /etc/sysconfig/network-scripts/
# 创建一个网卡,名称可通过ifconfig查看,名字是冒号前边的名字,如eth0
ifconfig
# 然后创建网卡的配置文件,或者修改默认创建的网卡文件
sudo vi ifcfg-eth0
# 然后添加下边的内容
IPADDR=192.168.1.10
# MAC地址需要根据ifconfig中信息更改
# 也可以从ip addr获取
HWADDR="00:0C:29:51:AA:12"
BOOTPROTO="static"
# 网关和上边虚拟机的网关IP一致
GATEWAY=192.168.1.2
TYPE=Ethernet
PREFIX0=24
DNS1=223.5.5.5
DEFROUTE=yes
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6_FAILURE_FATAL=no
# 这里是网卡的名字,需要根据ifconfig中信息更改
# 也可以从nmcli con show获取
NAME="eth0"
# UUID通过下边的命令获取
# nmcli con show
UUID=d2a014bb-21b4-4367-9f35-45894d494a00
# 修改一下ONBOOT为yes
ONBOOT=yes
# 配置成功后,重启网卡
sudo systemctl restart network
# 然后查看一下是否配置成功
ifconfig
# 测试一下网络是否连通
ping www.baidu.com防火墙的关闭
折叠代码块BASH 复制代码1
2
3
4
5
6# 查看防火墙的状态
sudo systemctl status firewalld
# 如果是active,就关闭防火墙(开机后还是会自动重启)
sudo systemctl stop firewalld
# 禁止防火墙开机启动
sudo systemdtl disable firewalld检查SSH是否开启
hadoop的主从结点(master,slave)进程监听和启动是通过SSH命令折叠代码块BASH 复制代码1
2
3
4
5
6# 查看ssh服务是否开启
sudo systemctl status sshd
# 没启动则开启
sudo systemctl start sshd
# 设置ssh开机自启动
sudo systemctl enable sshd设置Hosts(用于指定主从结点名与IP的对应关系)
折叠代码块BASH 复制代码1
2
3
4
5sudo vi /etc/hosts
192.168.1.10 master
192.168.1.20 slave1
192.168.1.30 slave2主机名配置
折叠代码块BASH 复制代码1
2
3
4# 在centos7的修改
sudo /etc/hostname
# 修改为master即可,从机就改成slave1,slave2
masterjdk8安装
折叠代码块BASH 复制代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15mkdir ~/software && cd ~/software
wget https://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz
tar -zxvf openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz
rm -rf openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz
# 在.bashrc或.bash_profile(centos7有,deepin可能没有)配置
echo "
export JAVA_HOME=/home/easul/software/java-se-8u41-ri
PATH=\$JAVA_HOME/bin:\$PATH
export PATH
# 配置jar包路径
export CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar
" >> ~/.bash_profile
# 重新加载配置文件
source ~/.bash_profile从master克隆两个slave结点之后的操作
在虚拟机标签右击=》管理=》克隆,需要选择需完整克隆折叠代码块BASH 复制代码1
2
3
4
5
6
7
8
9# 修改网卡IP
# 修改mac地址,通过ip addr获取
# 修改UUID,通过nmcli con show获取
# 会生成wired字样的网卡,选另一个网卡即可
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
# 更改主机名称
sudo vi /etc/hostname
# 改完之后,重启网卡
sudo systemctl restart network免密登录配置(需要每个结点单独设置)
折叠代码块BASH 复制代码1
2
3
4
5
6
7
8
9
10
11
12
13
14# 生成公私钥
ssh-keygen -t -rsa
# 创建共享密钥
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 修改共享密钥的权限
chmod 600 ~/.ssh/authorized_keys
# 使用scp在服务器间共享密钥
# 格式为:用户名@服务器:目录
scp ~/.ssh/authorized_keys easul@slave1:~/.ssh
# 步骤为在master生成共享密钥,追加到authorized_keys,然后复制到slave1
# 然后slave1生成共享密钥,追加到authorized_keys,然后复制到slave2
# 然后slave2生成共享密钥,追加到authorized_keys,然后覆盖到slave1,master
# 从而实现每个结点都有相同的共享密钥,从而免密登录
ssh slave1配置ntp服务(network time protocol)
用于时间的同步,集群里每个结点的时间要一致折叠代码块BASH 复制代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29# 安装ntpdate
sudo yum -y install ntp ntpdate
# 流程是master从网络同步时间,slave1和slave2从master同步时间
# 查看master的ntp.conf
more /etc/ntp.conf
# 可以看到四个server字样的地址,这个是默认同步地址
# master不用改,直接从网络同步,一会修改slave1和slave2即可
# 查看master的ntp服务是否启动
sudo systemctl status ntpd
# 没有启动则启动ntp服务
sudo systemctl start ntpd
# 设置ntp服务开机自启动
sudo systemctl enable ntpd
# 修改两个从机的ntp.conf
sudo vi /etc/ntp.conf
# 修改为下边的状态
# server 0.centos.pool.ntp.org iburst
# server 1.centos.pool.ntp.org iburst
# server 2.centos.pool.ntp.org iburst
# server 3.centos.pool.ntp.org iburst
server master iburst
# 然后启动从机的服务
sudo systemctl start ntpd
# 主机和从机查看同步的情况
watch ntpq -p
# 可通过date查看日期
date
hadoop集群搭建
有问题可以查看hadoop常用操作
1 | # 在master结点操作 |
配置hadoop-env.sh文件
折叠代码块BASH 复制代码1
2
3
4vi ~/software/hadoop-2.7.4/etc/hadoop/hadoop-env.sh
# export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/home/easul/software/java-se-8u41-ri配置yarn-env.sh文件
折叠代码块BASH 复制代码1
2
3
4vi ~/software/hadoop-2.7.4/etc/hadoop/yarn-env.sh
# export JAVA_HOME=/home/y/libexec/jdk1.6.0/
export JAVA_HOME=/home/easul/software/java-se-8u41-ri/配置slaves,在slaves加上slave的节点,删除默认的hosts
折叠代码块BASH 复制代码1
2
3echo "slave1
slave2
" > ~/software/hadoop-2.7.4/etc/hadoop/slaves配置core-site.xml
折叠代码块BASH 复制代码1
2
3
4
5
6
7
8
9
10
11
12
13
14vi ~/software/hadoop-2.7.4/etc/hadoop/core-site.xml
<configuration>
<property>
<!--执行NameNode文件系统-->
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<property>
<!--临时目录,注意值有三根斜线-->
<name>hadoop.tmp.dir</name>
<value>file:///home/easul/software/hadoop-data/hadoop/tmp</value>
</property>
</configuration>配置hdfs-site.xml
折叠代码块BASH 复制代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30vi ~/software/hadoop-2.7.4/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<!--指定NameNode存储meta和editlog的目录,注意值只有一根斜线-->
<name>dfs.namenode.name.dir</name>
<value>file:/home/easul/software/hadoop-data/dfs/name</value>
</property>
<property>
<!--指定DataNode存储blocks的目录,注意值只有一根斜线-->
<name>dfs.datanode.data.dir</name>
<value>file:/home/easul/software/hadoop-data/dfs/data</value>
</property>
<!--下边的配置已经默认有了-->
<property>
<!--指定数据副本数目-->
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<!--防止不允许远程读写hdfs-->
<name>dfs.permissions</name>
<value>true</value>
</property>
<property>
<!--指定Secondary NameNode地址-->
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
</configuration>创建所需目录
折叠代码块BASH 复制代码1
2
3mkdir -p ~/software/hadoop-data/dfs/data
mkdir -p ~/software/hadoop-data/dfs/name
mkdir -p ~/software/hadoop-data/hadoop/tmp配置mapred-site.xml。因为只有模板文件,所以复制出来一个进行修改
折叠代码块BASH 复制代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22cp ~/software/hadoop-2.7.4/etc/hadoop/mapred-site.xml.template ~/software/hadoop-2.7.4/etc/hadoop/mapred-site.xml
# MapReduce相关配置
vi ~/software/hadoop-2.7.4/etc/hadoop/mapred-site.xml
<configuration>
<property>
<!--指定MapReduce运行在yarn上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!--下边的配置已经默认有了-->
<property>
<!--指定MR作业执行历史地址-->
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<!--指定MR作业历史web应用地址-->
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>yarn-site.xml都是默认值,不需要配置,实际生产可能需要配置。是资源调度相关的
折叠代码块BASH 复制代码1
vi ~/software/hadoop-2.7.4/etc/hadoop/yarn-site.xml
折叠代码块YAML 复制代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57yarn.resourcemanager.address:
value: ${yarn.resourcemanager.hostname}:8033
annotation: 管理员可以通过该地址向RM发送管理命令等
yarn.resourcemanager.scheduler.address:
value: ${yarn.resourcemanager.hostname}:8030
annotation: RM对AM暴露的地址,AM通过地址想RM申请资源,释放资源等
mapreduce.jobhistory.webapp.address:
value: ${yarn.resourcemanager.hostname}:8088
annotation: RM对外暴露的web http 地址,用户可通过该地址在浏览器中查看集群信息
yarn.resourcemanager.webapp.https.address:
value: ${yarn.resourcemanager.hostname}:8090
annotation: web https 地址
yarn.resourcemanager.resource-tracker.address:
value: ${yarn.resourcemanager.hostname}:8031
annotation: RM对NM暴露地址,NM通过该地址向RM汇报心跳,领取任务等
yarn.resourcemanager.resource-tracker.client.thread-count:
value: 50
annotation: 处理来自NM的RPC请求的handler数
yarn.resourcemanager.admin.address:
value: ${yarn.resourcemanager.hostname}:8033
annotation: 管理员可以通过该地址向RM发送管理命令等
yarn.resourcemanager.scheduler.class:
value: org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler
annotation: RM对AM暴露的地址,AM通过地址想RM申请资源,释放资源调度器主类
yarn.resourcemanager.scheduler.client.thread-count:
value: 50
annotation: 处理来自AM的RPC请求的handler数
yarn.scheduler.minimum-allocation-mb:
value: 1024
annotation: 可申请的最少内存资源,以MB为单位
yarn.scheduler.maximum-allocation-mb:
value: 8192
annotation: 可申请的最大内存资源,以MB为单位
yarn.scheduler.minimum-allocation-vcores:
value: 1
annotation: 可申请的最小虚拟CPU个数
yarn.scheduler.maximum-allocation-vcores:
value: 32
annotation: 可申请的最大虚拟CPU个数
yarn.nodemanager.local-dirs:
value: ${hadoop.tmp.dir}/nm-local-dir
annotation: 中间结果存放位置,可配置多目录
yarn.log-aggregation-enable:
value: FALSE
annotation: 是否启用日志聚合
yarn.nodemanager.remote-app-log-dir:
value: /tmp/logs
annotation: 日志聚合目录
yarn.nodemanager.resource.memory-mb:
value: 8192
annotation: NM总的可用物理内存,以MB为单位。一旦设置,不可动态修改
yarn.nodemanager.resource.cpu-vcores:
value: 8
annotation: 可分配的CPU个数
yarn.nodemanager.aux-services:
value: 默认未指定服务
annotation: NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序hadoop的复制,格式化及启动
折叠代码块BASH 复制代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22# 将.bash_profile,hadoop和hadoop的数据文件夹都复制到slave
scp ~/.bash_profile easul@slave1:~/
scp ~/.bash_profile easul@slave2:~/
scp -r ~/software/hadoop-* easul@slave1:~/software
scp -r ~/software/hadoop-* easul@slave2:~/software
# 在两个slave刷新.bash_profile
source ~/.bash_profile
# 格式化hadoop的namenode
hadoop namenode -format
# hadoop的启动,在master启动即可
~/software/hadoop-2.7.4/sbin/start-dfs.sh
# 验证是否启动成功,用jps命令
# jps是JavaVirtualMachine Process Status Tool,java虚拟机进程状态工具
# 启动后master有NameNode,SecondaryNameNode,slave有DataNode
jps
~/software/hadoop-2.7.4/sbin/start-yarn.sh
# 启动后master多了ResourceManager,slave多了NodeManager
jps
# 查看yarn状态,master的IP来查看
# http://192.168.3.10:8088/
# 查看集群状态,master的IP来查看
# http://192.168.3.10:50070/
spark集群搭建
spark中文手册
环境中需要先安装scala,再安装spark安装
scala安装
折叠代码块BASH 复制代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20# 在master结点操作
cd ~/software
# https://www.scala-lang.org/download/2.12.15.html
wget https://downloads.lightbend.com/scala/2.12.15/scala-2.12.15.tgz
tar -zxvf scala-2.12.15.tgz
rm -rf scala-2.12.15.tgz
# 配置环境变量
echo "
SCALA_HOME=/home/easul/software/scala-2.12.15
PATH=\$SCALA_HOME/bin:\$PATH
export PATH
" >> ~/.bash_profile
source ~/.bash_profile
# 复制scala和配置文件到slave结点
scp ~/.bash_profile easul@slave1:~/
scp ~/.bash_profile easul@slave2:~/
scp -r ~/software/scala-* easul@slave1:~/software
scp -r ~/software/scala-* easul@slave2:~/software
# 刷新slave的配置文件
source ~/.bash_profilespark安装
折叠代码块BASH 复制代码1
2
3
4
5
6# 在master结点操作
cd ~/software
# 加速链接
wget https://archive.apache.org/dist/spark/spark-2.4.2/spark-2.4.2-bin-hadoop2.7.tgz
tar -zxvf spark-2.4.2-bin-hadoop2.7.tgz
rm -rf spark-2.4.2-bin-hadoop2.7.tgzspark-env.sh的配置
折叠代码块BASH 复制代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16cp ~/software/spark-2.4.2-bin-hadoop2.7/conf/spark-env.sh.template ~/software/spark-2.4.2-bin-hadoop2.7/conf/spark-env.sh
vi ~/software/spark-2.4.2-bin-hadoop2.7/conf/spark-env.sh
# 添加如下配置,放到Copy it下边
JAVA_HOME=/home/easul/software/java-se-8u41-ri
SCALA_HOME=/home/easul/software/scala-2.12.15
SPARK_MASTER_IP=192.168.3.10
HADOOP_CONF_DIR=/home/easul/software/hadoop-2.7.4/etc/hadoop
# shuffled以及RDD的数据存放目录,用于写中间数据,需要再创建一下
SPARK_LOCAL_DIRS=/home/easul/software/hadoop-data/spark_data
# worker端进程工作目录,包括worker的日志以及临时存储空间,默认在spark根目录的work下
SPARK_WORKER_DIRS=/home/easul/software/hadoop-data/spark_data/spark_works
# 创建spark的中间数据文件夹
mkdir -p ~/software/hadoop-data/spark_data
mkdir -p ~/software/hadoop-data/spark_data/spark_works其他配置项
折叠代码块YAML 复制代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15SPARK_MASTER_IP: master实例绑定的IP地址,例如,绑定到一个公网IP
SPARK_MASTER_PORT: mater实例绑定的端口(默认7077)
SPARK_MASTER_WEBUI_PORT: masterwebUI的端口(默认8080)
SPARK_MASTER_OPTS: master专用配置属性,格式如”-Dx=y”(默认空),可能的选项请参考下面的列表。
SPARK_LOCAL_DIRS: Spark的本地工作目录,包括:映射输出的临时文件和RDD保存到磁盘上的临时数据。这个目录需要快速访问,最好设成本地磁盘上的目录。也可以通过使用逗号分隔列表,将其设成多个磁盘上的不同路径。
SPARK_WORKER_CORES: 本机上Spark应用可以使用的CPUcore上限(默认所有CPUcore)
SPARK_WORKER_MEMORY: 本机上Spark应用可以使用的内存上限,如:1000m,2g(默认为本机所有内存减去1GB);注意每个应用单独使用的内存大小要用spark.executor.memory属性配置的。
SPARK_WORKER_PORT: Sparkworker绑定的端口(默认随机)
SPARK_WORKER_WEBUI_PORT: workerwebUI端口(默认8081)
SPARK_WORKER_INSTANCES: 每个slave机器上启动的worker实例个数(默认:1)。如果你的slave机器非常强劲,可以把这个值设为大于1;相应的,你需要设置SPARK_WORKER_CORES参数来显式地限制每个worker实例使用的CPU个数,否则每个worker实例都会使用所有的CPU
SPARK_WORKER_DIR: Sparkworker的工作目录,包括worker的日志以及临时存储空间(默认:${SPARK_HOME}/work)
SPARK_WORKER_OPTS: worker的专用配置属性,格式为:”-Dx=y”,可能的选项请参考下面的列表。
SPARK_DAEMON_MEMORY: Sparkmaster和worker后台进程所使用的内存(默认:1g)
SPARK_DAEMON_JAVA_OPTS: Sparkmaster和workers后台进程所使用的JVM选项,格式为:”-Dx=y”(默认空)
SPARK_PUBLIC_DNS: Sparkmaster和workers使用的公共DNS(默认空)slaves的配置(存储slave的名称)
折叠代码块BASH 复制代码1
2
3
4
5
6
7cp ~/software/spark-2.4.2-bin-hadoop2.7/conf/slaves.template ~/software/spark-2.4.2-bin-hadoop2.7/conf/slaves
vi ~/software/spark-2.4.2-bin-hadoop2.7/conf/slaves
# 删掉localhost
master
slave1
slave2spark-defaults.conf(默认配置文件)
折叠代码块BASH 复制代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16cp ~/software/spark-2.4.2-bin-hadoop2.7/conf/spark-defaults.conf.template ~/software/spark-2.4.2-bin-hadoop2.7/conf/spark-defaults.conf
vi ~/software/spark-2.4.2-bin-hadoop2.7/conf/spark-defaults.conf
# 指定集群地址
spark.master spark://master:7077
# 指定spark序列化工具,处理RDD数据量大时,可以将程序的类序列化,从而提升性能,二进制流会更小
spark.serializer org.apache.spark.serializer.KryoSerializer
# 开启spark日志文件
spark.eventLog.enabled true
spark.eventLog.dir file:///home/easul/software/hadoop-data/spark_data/history/event-log
spark.history.fs.logDirectory file:///home/easul/software/hadoop-data/spark_data/history/spark-events
# 开启日志压缩
spark.eventLog.compress true
mkdir -p ~/software/hadoop-data/spark_data/history/event-log
mkdir -p ~/software/hadoop-data/spark_data/history/spark-events其他配置项可以参考如下
折叠代码块YAML 复制代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30spark.app.name:
default-value: (none)
annotation: 应用程序的名称,会在日志和webUI显示
spark.driver.cores:
default-value: 1
annotation: driver程序占用的CPU核数,只在cluster模式下有效。
spark.driver.maxResultSize:
default-value: 1g
annotation: 对Spark每个action结果集大小的限制,最少是1M,若设为0则不限制大小。若Job结果超过限制则会异常退出,若结果集限制过大也可能造成OOM问题
spark.driver.memory:
default-value: 1g
annotation: driver进程可用的内存。注意:不能在代码中配置,因为此时driver已经启动,可以通过–driver-memory命令行参数或者配置文件进行配置。
spark.executor.memory:
default-value: 1g
annotation: 每个 executor 可用的内存数量 (e.g. 2g, 8g).
spark.extraListeners:
default-value: (none)
annotation: 一系列实现SparkListener的类,spark监听总线会创建这些类的实例。
spark.local.dir:
default-value: /tmp
annotation: 应用程序的名称,会在日志和webUI显示
spark.logConf:
default-value: false
annotation: 将SparkConf的有效配置作为INFO进行记录
spark.master:
default-value: (none)
annotation: 集群master节点
spark.driver.cores:
default-value: (none)
annotation: 用于存储mpp输出文件和RDD缓存文件, 常配置在SSD等存储设备上, 可以通过逗号分隔指定多个目录。注意,在 Spark 1.0 后续版本,会被 SPARK_LOCAL_DIRS(Standalone, Mesos) or LOCAL_DIRS (YARN) 环境变量覆盖 .spark环境变量配置及启动
折叠代码块BASH 复制代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27# 配置环境变量
echo "
SPARK_HOME=/home/easul/software/spark-2.4.2-bin-hadoop2.7
PATH=\$SPARK_HOME/bin:\$SPARK_HOME/sbin:\$PATH
export PATH
" >> ~/.bash_profile
source ~/.bash_profile
# 分发spark和配置文件到slave结点
scp ~/.bash_profile easul@slave1:~/
scp ~/.bash_profile easul@slave2:~/
scp -r ~/software/spark-* easul@slave1:~/software
scp -r ~/software/spark-* easul@slave2:~/software
scp -r ~/software/hadoop-data/spark_data easul@slave1:~/software/hadoop-data
scp -r ~/software/hadoop-data/spark_data easul@slave2:~/software/hadoop-data
# 刷新slave的配置文件
source ~/.bash_profile
# 在master启动spark
# 启动master
~/software/spark-2.4.2-bin-hadoop2.7/sbin/start-master.sh
# 启动slave
~/software/spark-2.4.2-bin-hadoop2.7/sbin/start-slaves.sh
# Master在jps中有Worker即启动成功
jps
# web界面访问
# http://192.168.3.10:8080
kafka集群搭建
kafka是一个分布式消息队列系统,设计为发布与订阅的系统, 相关概念如下
1 | broker: 消息的服务器, |
上边组件的信息都存到zookeeper,zookeeper也可以协调组件之间的工作
zookeeper的安装,配置,启动
折叠代码块BASH 复制代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47# 先在master结点
cd ~/software
wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
tar -zxvf zookeeper-3.4.6.tar.gz
rm -rf zookeeper-3.4.6.tar.gz
cp ~/software/zookeeper-3.4.6/conf/zoo_sample.cfg ~/software/zookeeper-3.4.6/conf/zoo.cfg
vi ~/software/zookeeper-3.4.6/conf/zoo.cfg
# 数据的存储路径配置
# dataDir=/tmp/zookeeper
dataDir=/home/easul/software/hadoop-data/zk_data
# zookeeper服务器的配置,1, 2, 3分别对应的是master,slave1,slave2的myid
# 配置的解释为:server.服务器ID=服务器IP地址:集群内的机器通讯使用的端口:选举leader使用的端口
# 为client提供的端口为2181,集群默认通讯端口为2881,选举leader默认端口为3881
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
# 创建zookeeper的数据文件夹
mkdir -p ~/software/hadoop-data/zk_data
# 创建myid,当作这个集群结点的唯一标识
echo "1" > ~/software/hadoop-data/zk_data/myid
# 配置master的环境变量
echo "
ZOOKEEPER_HOME=/home/easul/software/zookeeper-3.4.6
PATH=\$ZOOKEEPER_HOME/bin:\$PATH
export PATH
" >> ~/.bash_profile
source ~/.bash_profile
# 分发环境变量,zookeeper和数据文件夹到slave结点
scp ~/.bash_profile easul@slave1:~/
scp ~/.bash_profile easul@slave2:~/
scp -r ~/software/zookeeper-* easul@slave1:~/software
scp -r ~/software/zookeeper-* easul@slave2:~/software
scp -r ~/software/hadoop-data/zk_data easul@slave1:~/software/hadoop-data
scp -r ~/software/hadoop-data/zk_data easul@slave2:~/software/hadoop-data
# 配置slave结点的myid
echo "2" > ~/software/hadoop-data/zk_data/myid
echo "3" > ~/software/hadoop-data/zk_data/myid
# 刷新slave的配置文件
source ~/.bash_profile
# 在每一个结点启动zookeeper
zkServer.sh start
# zkServer.sh stop: 停止zookeeper
# zkServer.sh status: 查看zookeeper是leader还是follower
# jps有了QuorumPeerMain即启动成功
jpskafka的安装,配置及运行
折叠代码块BASH 复制代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46# 先在master结点
cd ~/software
wget https://archive.apache.org/dist/kafka/0.10.1.0/kafka_2.11-0.10.1.0.tgz
tar -zxvf kafka_2.11-0.10.1.0.tgz
rm -rf kafka_2.11-0.10.1.0.tgz
vi ~/software/kafka_2.11-0.10.1.0/config/server.properties
# 配置如下,需要一个一个找来配置
broker.id=0
# 日志文件夹
# log.dirs=/tmp/kafka-logs
log.dirs=/home/easul/software/hadoop-data/kafka-logs
# zookeeper集群配置
# 指定kafka连接的zookeeper的地址
# zookeeper.connect=localhost:2181
zookeeper.connect=master:2181,slave1:2181,slave2:2181
# 创建kafka的数据文件夹
mkdir -p ~/software/hadoop-data/kafka-logs
# 环境变量配置
echo "
KAFKA_HOME=/home/easul/software/kafka_2.11-0.10.1.0
PATH=\$KAFKA_HOME/bin:\$PATH
export PATH
" >> ~/.bash_profile
source ~/.bash_profile
# 分发环境变量,kafka和数据文件夹到slave结点
scp ~/.bash_profile easul@slave1:~/
scp ~/.bash_profile easul@slave2:~/
scp -r ~/software/kafka* easul@slave1:~/software
scp -r ~/software/kafka* easul@slave2:~/software
scp -r ~/software/hadoop-data/kafka-logs easul@slave1:~/software/hadoop-data
scp -r ~/software/hadoop-data/kafka-logs easul@slave2:~/software/hadoop-data
# 刷新slave的配置文件
source ~/.bash_profile
# 修改slave的broker.id,slave1改成1,salve2改成2
vi ~/software/kafka_2.11-0.10.1.0/config/server.properties
broker.id=1
# 在每个结点启动kafka
# 启动kafka之前,zookeeper需要先启动,因为kafka的组件需要注册到zookeeper
# 加上 -daemon 表示启动守护进程
kafka-server-start.sh -daemon /home/easul/software/kafka_2.11-0.10.1.0/config/server.properties
# 新打开一个master窗口,jps有了kafka即启动成功
jpskafka的常用操作
折叠代码块BASH 复制代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33# 在刚刚的master新窗口操作
# 创建kafka的一个topic,备份数是3个,分区数是3个,topic名称为test
# --zookeeper 用于指定链接的zookeeper服务器
# --list 显示当前的topic有哪些
# --create 创建topic
# --delete 删除topic
# --replication-factor 设置备份数
# --partitions 设置分区数
# --topic 指定topic的名称
kafka-topics.sh --create --zookeeper master:2181,slave1:2181,slave2:2181 --replication-factor 1 --partitions 3 --topic test
# 向topic生产消息,回车之后输入几行字符串
# kafka写入topic的端口是9092
kafka-console-producer.sh --broker-list master:9092, slave1:9092, slave2:9092 --topic test
a
b
c
d
e
# 再打开一个master窗口看一下消息生产的是否成功,有提示内容即创建消息成功
# test:2:2
# test:1:1
# test:0:2
# 创建了三个分区,所以有0,1,2三个分区,创建了5条消息,消息被分配到了不同分区
kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list master:9092, slave1:9092, slave2:9092 --topic test2 --time -1
# 查看topic,输出了test
kafka-topics.sh --list --zookeeper master:2181,slave1:2181,slave2:2181
# 消费刚刚生产的消息
# --zookeeper 指定消费的服务器,是一个老的API,新的要用--bootstrap-server
# --topic 指定消费的topic
# --from-beginning 从开始消费
kafka-console-consumer.sh --bootstrap-server master:9092,slave1:9092,slave2:9092 --topic test --from-beginning
flume与kafka整合
- 一个agent是一个flume的部署单元,本质是一个java的应用
- agent的
sources组件用于生产和接收数据,channels组件用于做数据缓冲和传输,sinks组件用于将数据传送到下一个agent或目的地 - agent组件命名:agent名称.agent组件类型=组件名称1 组件名称2
- agent参数配置:agent名称.agent组建类型.组件名称.配置参数=参数值
1 | # 在master结点 |
- 本文标题:大数据中日志分析——1、集群搭建
- 创建时间:2022-02-27 14:36:26
- 本文链接:https://blog.212490197.xyz/article/program/bigdata/log-analysis-environment/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
v1.5.2