软件 | 版本 |
---|---|
Mysql | 5.7 |
Java | 1.8.0_241 |
Hadoop | 3.3.0 |
Zookeeper | 3.4.6 |
Hive | 3.1.2 |
Flink | 1.14.5 |
Hudi | 0.11.1 |
Doris | 1.1.0 |
Dinky | 0.6.6 |
Flink CDC | 2.2.0 |
Presto | 0.261 |
Hue | 4.1.0 |
1. Hadoop集群部署
1.1 集群安装
1)上传Hadoop安装包到 /opt/software
目录下
2)解压安装文件到/opt/server
下面
tar -zxvf hadoop-3.3.0.tar.gz -C /opt/server/
3)将 Hadoop 添加到环境变量
#HADOOP_HOME
export HADOOP_HOME=/opt/server/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
4)让修改后的文件生效
source /etc/profile
5)测试是否安装成功
hadoop version
6)Hadoop目录结构
[root@node1 hadoop-3.3.0]$ ll
总用量 176
drwxr-xr-x. 2 root root 183 9月 12 2019 bin
drwxr-xr-x. 3 root root 20 9月 12 2019 etc
drwxr-xr-x. 2 root root 106 9月 12 2019 include
drwxr-xr-x. 3 root root 20 9月 12 2019 lib
drwxr-xr-x. 4 root root 288 9月 12 2019 libexec
-rw-rw-r--. 1 root root 147145 9月 4 2019 LICENSE.txt
-rw-rw-r--. 1 root root 21867 9月 4 2019 NOTICE.txt
-rw-rw-r--. 1 root root 1366 9月 4 2019 README.txt
drwxr-xr-x. 3 root root 4096 9月 12 2019 sbin
drwxr-xr-x. 4 root root 31 9月 12 2019 share
重要目录
① bin 目录:存放对 Hadoop 相关服务(hdfs, yarn, mapred)进行操作的脚本
② etc 目录: Hadoop 的配置文件目录,存放 Hadoop 的配置文件
③ lib 目录:存放 Hadoop 的本地库(对数据进行压缩解压缩功能)
④ sbin 目录:存放启动或停止 Hadoop 相关服务的脚本
⑤ share 目录:存放 Hadoop 的依赖 jar 包、 文档、 和官方案例
7)配置文件说明
Hadoop 配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。
① 默认配置文件:
要获取的默认文件 | 文件存放在 Hadoop 的 jar 包中的位置 |
---|---|
[core-default.xml] | hadoop-common-3.1.3.jar/core-default.xml |
[hdfs-default.xml] | hadoop-hdfs-3.1.3.jar/hdfs-default.xml |
[yarn-default.xml] | hadoop-yarn-common-3.1.3.jar/yarn-default.xml |
[mapred-default.xml] | hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml |
② 自定义配置文件:
core-site.xml、 hdfs-site.xml、 yarn-site.xml、 mapred-site.xml 四个配置文件存放在$HADOOP_HOME/etc/hadoop 这个路径上, 用户可以根据项目需求重新进行修改配置。
1.2 配置集群
- 核心配置文件
配置 core-site.xml
cd $HADOOP_HOME/etc/hadoop
vim core-site.xml
文件内容如下:
<configuration>
<!-- 指定 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:8020</value>
</property>
<!-- 指定 hadoop 数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/server/hadoop-3.3.0/data</value>
</property>
<!-- 配置 HDFS 网页登录使用的静态用户为 root -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
</configuration>
- HDFS 配置文件
配置 hdfs-site.xml
vim hdfs-site.xml
文件内容如下:
<configuration>
<!-- nn web 端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>node1:9870</value>
</property>
<!-- 2nn web 端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node3:9868</value>
</property>
</configuration>
- YARN 配置文件
配置 yarn-site.xml
vim yarn-site.xml
文件内容如下:
<configuration>
<!-- 指定 MR 走 shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 ResourceManager 的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node2</value>
</property>
<!-- 环境变量的继承 -->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOM</value>
</property>
</configuration>
- MapReduce 配置文件
配置 mapred-site.xml
vim mapred-site.xml
文件内容如下:
<configuration>
<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
在集群上分发配置好的 Hadoop
xsync /opt/server/hadoop-3.3.0
配置 workers
cd /opt/server/hadoop-3.3.0/etc/hadoop
vim workers
在该文件中增加如下内容:(注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行)
node1
node2
node3
同步所有节点配置文件
xsync workers
1.3 群起集群
如果集群是第一次启动,需要在node1节点格式化NameNode(注意:格式化NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往数据。 如果集群在运行过程中报错,需要重新格式化 NameNode 的话, 一定要先停止 namenode 和 datanode 进程, 并且要删除所有机器的 data 和 logs 目录,然后再进行格式化。)
hdfs namenode -format
初始化成功后会产生data和logs两个文件夹
- 启动 HDFS
cd /opt/server/hadoop-3.3.0
sbin/start-dfs.sh
原因:如果你的Hadoop是另外启用其它用户来启动,记得将root改为对应用户
在/hadoop/sbin路径下:将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数:
#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
还有,start-yarn.sh,stop-yarn.sh顶部也需添加以下:
#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
重新启动HDFS
解决方法:在hadoop-env.sh中,再显示地重新声明一遍JAVA_HOME(所有节点)
重启HDFS
- 在配置了 ResourceManager 的节点(node2) 启动 YARN
sbin/start-yarn.sh
Web 端查看 HDFS 的 NameNode
(a)浏览器中输入:
http://node1:9870
(b)查看 HDFS 上存储的数据信息
Web 端查看 YARN 的 ResourceManager
(a)浏览器中输入:
http://node2:8088
(b)查看 YARN 上运行的 Job 信息
1.4 配置历史服务器
为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:
1) 配置 mapred-site.xml
vim mapred-site.xml
在该文件里面增加如下配置
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>node1:10020</value>
</property>
<!-- 历史服务器 web 端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node1:19888</value>
</property>
2)分发配置
xsync mapred-site.xml
3)在 node1 启动历史服务器
[reader@node1 hadoop]$ mapred --daemon start historyserver
# 关闭历史服务器
[reader@node1 hadoop]$ mapred --daemon stop historyserver
4)查看历史服务器是否启动
[reader@node1 hadoop]$ jps
5)查看 JobHistory
http://node1:19888/jobhistory
1.5 配置日志的聚集
日志聚集概念:应用运行完成以后,将程序运行日志信息上传到 HDFS 系统上。
日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。
注意:开启日志聚集功能,需要重新启动 NodeManager、ResourceManager和HistoryServer。
开启日志聚集功能具体步骤如下:
1)配置 yarn-site.xml
vim yarn-site.xml
在该文件里面增加如下配置。
<!-- 开启日志聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://node1:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为 7 天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
2)分发配置
xsync yarn-site.xml
3)关闭 NodeManager 、ResourceManager和HistoryServer
sbin/stop-yarn.sh
mapred --daemon stop historyserver
4)启动 NodeManager 、ResourceManage和HistoryServer
start-yarn.sh
mapred --daemon start historyserver
1.6 集群启动/停止方式总结
1)各个模块分开启动/停止(配置 ssh 是前提)— 常用
(1)整体启动/停止 HDFS
start-dfs.sh/stop-dfs.sh
(2)整体启动/停止 YARN
start-yarn.sh/stop-yarn.sh
2)各个服务组件逐一启动/停止
(1)分别启动/停止 HDFS 组件
hdfs --daemon start/stop namenode/datanode/secondarynamenode
(2)启动/停止 YARN
yarn --daemon start/stop resourcemanager/nodemanager
1.7 集群常用脚本
1)Hadoop 集群启停脚本(包含 HDFS,Yarn,Historyserver):hdp
cd ~/bin
vim hdp
输入如下内容:
#!/bin/bash
if [ $# -lt 1 ]
then
echo "No Args Input..."
exit ;
fi
case $1 in
"start")
echo " =================== 启动 hadoop集群 ==================="
echo " --------------- 启动 hdfs ---------------"
ssh node1 "/opt/server/hadoop-3.3.0/sbin/start-dfs.sh"
echo " --------------- 启动 yarn ---------------"
ssh node2 "/opt/server/hadoop-3.3.0/sbin/start-yarn.sh"
echo " --------------- 启动 historyserver ---------------"
ssh node1 "/opt/server/hadoop-3.3.0/bin/mapred --daemon start historyserver"
;;
"stop")
echo " =================== 关闭 hadoop集群 ==================="
echo " --------------- 关闭 historyserver ---------------"
ssh node1 "/opt/server/hadoop-3.3.0/bin/mapred --daemon stop historyserver"
echo " --------------- 关闭 yarn ---------------"
ssh node2 "/opt/server/hadoop-3.3.0/sbin/stop-yarn.sh"
echo " --------------- 关闭 hdfs ---------------"
ssh node1 "/opt/server/hadoop-3.3.0/sbin/stop-dfs.sh"
;;
*)
echo "Input Args Error..."
;;
esac
保存后退出,然后赋予脚本执行权限
chmod +x hdp
2)查看三台服务器 Java 进程脚本:jpsall
vim jpsall
输入如下内容:
#!/bin/bash
for host in node1 node2 node3
do
echo =============== $host ===============
ssh $host /usr/java/jdk1.8.0_181-cloudera/bin/jps
done
保存后退出,然后赋予脚本执行权限
chmod +x jpsall
1.8 常用端口号说明
端口名称 | Hadoop2.x | Hadoop3.x |
---|---|---|
NameNode 内部通信端口 | 8020 / 9000 | 8020 / 9000/9820 |
NameNode HTTP UI | 50070 | 9870 |
MapReduce 查看执行任务端口 | 8088 | 8088 |
历史服务器通信端口 | 19888 | 19888 |
2. Zookeeper集群部署
1)在node1主机上,解压zookeeper的压缩包到/opt/server路径下去,然后准备进行安装
tar -zxvf zookeeper-3.4.6.tar.gz -C /opt/server/
2)修改配置文件
cd /opt/server/zookeeper-3.4.6/conf/
cp zoo_sample.cfg zoo.cfg
mkdir -p /opt/server/zookeeper-3.4.6/zkdatas/
vim zoo.cfg
3)修改以下内容
#Zookeeper的数据存放目录
dataDir=/opt/server/zookeeper-3.4.6/zkdatas
# 保留多少个快照
autopurge.snapRetainCount=2
# 日志多少小时清理一次
autopurge.purgeInterval=1
# 集群中服务器地址
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
4)添加myid配置
在node1主机的/export/server/zookeeper-3.4.6/zkdatas/这个路径下创建一个文件,文件名为myid ,文件内容为1
echo 1 > /opt/server/zookeeper-3.4.6/zkdatas/myid
5)安装包分发并修改myid的值
在node1主机上,将安装包分发到其他机器
第二台机器上修改myid的值为2
echo 2 > /export/server/zookeeper-3.4.6/zkdatas/myid
第三台机器上修改myid的值为3
echo 3 > /export/server/zookeeper-3.4.6/zkdatas/myid
6)配置Path环境变量
#ZOOKEEPER_HOME
export ZOOKEEPER_HOME=/opt/server/zookeeper-3.4.6
export PATH=:$ZOOKEEPER_HOME/bin:$PATH
7)三台机器启动zookeeper服务
/opt/server/zookeeper-3.4.6/bin/zkServer.sh start
8)三台主机分别查看启动状态
/opt/server/zookeeper-3.4.6/bin/zkServer.sh status
9)集群shell脚本
#!/bin/bash
case $1 in
"start"){
for i in node1 node2 node3
do
echo ---------- zookeeper $i 启动 ------------
ssh $i "/opt/server/zookeeper-3.4.6/bin/zkServer.sh start"
done
};;
"stop"){
for i in node1 node2 node3
do
echo ---------- zookeeper $i 停止 ------------
ssh $i "/opt/server/zookeeper-3.4.6/bin/zkServer.sh stop"
done
};;
"status"){
for i in node1 node2 node3
do
echo ---------- zookeeper $i 状态 ------------
ssh $i "/opt/server/zookeeper-3.4.6/bin/bin/zkServer.sh status"
done
};;
esac
3. Hive集群部署
1)上传压缩包到/export/software目录里,并解压安装包
# --------------------Hive安装配置----------------------
cd /opt/software/
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/server
cd /opt/server
mv apache-hive-3.1.2-bin hive-3.1.2
# 解决hadoop、hive之间guava版本差异
cd /opt/server/hive-3.1.2
rm -rf lib/guava-19.0.jar
cp /opt/server/hadoop-3.3.0/share/hadoop/common/lib/guava-27.0-jre.jar ./lib/
# 添加mysql jdbc驱动到hive安装包lib/文件下
mysql-connector-java-5.1.41-bin.jar
# 修改hive环境变量文件 添加HADOOP_HOME
cd /opt/server/hive-3.1.2/conf/
mv hive-env.sh.template hive-env.sh
vim hive-env.sh
HADOOP_HOME=/opt/server/hadoop-3.3.0
export HIVE_CONF_DIR=/opt/server/hive-3.1.2/conf
export HIVE_AUX_JARS_PATH=/opt/server/hive-3.1.2/lib
2)新增hive-site.xml 配置mysql等相关信息
vim hive-site.xml
3)添加以下内容:
<configuration>
<!-- 存储元数据mysql相关配置 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value> jdbc:mysql://node2:3306/hive?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<!-- H2S运行绑定host -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>node1</value>
</property>
<!-- 远程模式部署metastore 服务地址 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://node1:9083</value>
</property>
<!-- 关闭元数据存储授权 -->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
<!-- 关闭元数据存储版本的验证 -->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
</configuration>
4)初始化metadata(只需要在配置完Hive之后进行一次操作)
# 初始化成功会在mysql中创建74张表
cd /opt/server/hive-3.1.2
bin/schematool -initSchema -dbType mysql -verbos
# 添加环境变量
vim /etc/profile
export HIVE_HOME=/opt/server/hive-3.1.2
export PATH=:$HIVE_HOME/bin:$PATH
# 让环境变量生效
source /etc/profile
# -----------------Metastore 和 Hiveserver2启动----
nohup /opt/server/hive-3.1.2/bin/hive --service metastore 2>&1 &
nohup /opt/server/hive-3.1.2/bin/hive --service hiveserver2 2>&1 &
# 验证是否安装成功!
在Linux中输入hive命令,直接回车,出现一个终端,在该终端中可以输入sql命令:
show databases;
5)Beeline Client
hive经过发展,推出了第二代客户端beeline,但是beeline客户端不是直接访问metastore服务的,而是需要单独启动hiveserver2服务。
在node1的/export/server/hadoop-3.3.0/etc/hadoop目录下,修改core-site.xml,在该文件中添加以下配置,实现用户代理:
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
将修改好的core-site.xml文件分发到node2和node3,然后重启Hadoop(stop-all.sh start-all.sh)
在hive运行的服务器上,确保已经启动metastore服务和hiveserver2服务,如果没有启动,则执行以下语句:
nohup /opt/server/hive-3.1.2/bin/hive --service metastore 2>&1 &
nohup /opt/server/hive-3.1.2/bin/hive --service hiveserver2 2>&1 &
在node1上使用beeline客户端进行连接访问。
beeline
根据提醒进行以下操作:
/opt/server/hive-3.1.2/bin/beeline
Beeline version 3.1.2 by Apache Hive
beeline> !connect jdbc:hive2://node1:10000
Connecting to jdbc:hive2://node1:10000
Enter username for jdbc:hive2://node1:10000:root
Enter password for jdbc:hive2://node1:10000:123456
4. Kafka集群部署
4.1 Kafka集群架构及角色功能
Kafka中的每个角色以及对应的功能
-
分布式主从架构【公平】:允许从节点选举成为主节点
-
主:Kafka Broker 【Controller】
- 是一种特殊的Broker,从所有Broker中选举出来的,负责普通Broker的工作
- 负责管理所有从节点:Topic、分区和副本【负责决定一个分区的leader副本和follower副本】
- 每次启动集群,会从所有Broker中选举一个Controller,由ZK实现
-
从:Kafka Broker
- 对外提供读写请求
- 其他的Broker监听Controller在ZK中创建的临时节点,如果Controller故障,会重新从Broker选举一个新的Controller
-
ZK的功能
- 辅助选举Controller:启动时所有Broker都会到Zk中创建临时节点,谁创建成功谁就是主节点
- 存储Kafka元数据
-
Kafka 3.0版本新特性:可以摆脱ZK,独立运行了
-
小结:理解Kafka集群架构及角色功能
4.2 Kafka分布式集群部署
1)下载解压安装
下载:http://archive.apache.org/dist/kafka/
上传到第一台机器
cd /opt/software/
解压
# 解压安装
tar -zxvf kafka_2.12-2.4.1.tgz -C /opt/server/
cd /opt/server/kafka_2.12-2.4.1/
# Kafka数据存储的位置
mkdir datas
2)修改配置
切换到配置文件目录
cd /opt/server/kafka_2.12-2.4.1/config
修改server.properties:vim server.properties
#21行:唯一的 服务端id
broker.id=0
#60行:指定kafka的日志及数据【segment【.log,.index】】存储的位置
log.dirs=/opt/server/kafka_2.12-2.4.1/datas
#123行:指定zookeeper的地址
zookeeper.connect=node1:2181,node2:2181,node3:2181
#在最后添加两个配置,允许删除topic,当前kafkaServer的主机名
delete.topic.enable=true
host.name=node1
分发
xsync /opt/server/kafka_2.12-2.4.1/
第二台:server.properties
#21行:唯一的 服务端id
broker.id=1
#最后
host.name=node2
第三台:server.properties
#21行:唯一的 服务端id
broker.id=2
#最后
host.name=node3
添加环境变量
vim /etc/profile
#KAFKA_HOME
export KAFKA_HOME=/opt/server/kafka_2.12-2.4.1
export PATH=:$PATH:$KAFKA_HOME/bin
source /etc/profile
4.3 Kafka启动与关闭
1)启动Zookeeper
启动Kafka:只能启动当前节点
cd /opt/server/kafka_2.12-2.4.1/
bin/kafka-server-start.sh config/server.properties >>/dev/null 2>&1 &
# >>/dev/null 2>&1 将日志重定向到黑洞
关闭Kafka
bin/kafka-server-stop.sh
2)封装Kafka启停脚本:kafka.sh
#!/bin/bash
KAFKA_HOME=/opt/server/kafka_2.12-2.4.1
case $1 in
"start"){
for i in node1 node2 node3
do
echo ---------- kafka $i 启动 ------------
/usr/bin/ssh $i "cd ${KAFKA_HOME};source /etc/profile;export JMX_PORT=9988;${KAFKA_HOME}/bin/kafka-server-start.sh ${KAFKA_HOME}/config/server.properties >>/dev/null 2>&1 &"
echo "${host} started"
done
};;
"stop"){
for i in node1 node2 node3
do
echo ---------- zookeeper $i 停止 ------------
/usr/bin/ssh $i "cd ${KAFKA_HOME};source /etc/profile;${KAFKA_HOME}/bin/kafka-server-stop.sh"
done
};;
esac
- 关闭,可能需要多等待一会,才看不到进程
5. HBase集群部署
1)上传HBASE安装包到第一台机器的/opt/software目录下
2)解压安装
tar -zxf hbase-2.1.0.tar.gz -C /opt/server/
cd /opt/server/hbase-2.1.0/
3)修改配置
切换到配置文件目录下
cd /opt/server/hbase-2.1.0/conf/
修改hbase-env.sh:注意JDK的版本可能不一致
#28行
export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera
#125行
export HBASE_MANAGES_ZK=false
修改hbase-site.xml
cd /opt/server/hbase-2.1.0/
mkdir datas
vim conf/hbase-site.xml
<property>
<!-- 指定hbase中临时文件存储位置 -->
<name>hbase.tmp.dir</name>
<value>/opt/server/hbase-2.1.0/datas</value>
</property>
<property>
<!-- 指定hbase在hdfs中的存储位置 -->
<name>hbase.rootdir</name>
<value>hdfs://node1:8020/hbase</value>
</property>
<property>
<!-- 是否构建分布式hbase -->
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<!-- 指定zookeeper地址 -->
<name>hbase.zookeeper.quorum</name>
<value>node1,node2,node3</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
修改regionservers
vim conf/regionservers
node1
node2
node3
4)配置环境变量
#HBASE_HOME
export HBASE_HOME=/opt/server/hbase-2.1.0
export PATH=:$PATH:$HBASE_HOME/bin
5)复制jar包
cp lib/client-facing-thirdparty/htrace-core-3.1.0-incubating.jar lib/
6)分发
7)服务端启动与关闭
step1:启动HDFS【第一台机器】,注意一定要等HDFS退出安全模式再启动Hbase
hdp.sh start
step2:启动ZK
zk.sh start
step3:启动Hbase
start-hbase.sh
step4:先关闭Hbase再关闭zk
stop-hbase.sh
zk.sh stop
hdp.sh stop
8)测试
访问Hbase Web UI【node1:16010】
6. Flink on Yarn集群部署
1)关闭YARN的内存检查
# yarn-site.xml中添加配置
vim /opt/server/hadoop/etc/hadoop/yarn-site.xml
添加如下内容:
<!-- 关闭yarn内存检查 -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
2)配置Application最大的尝试次数
# yarn-site.xml中添加配置
vim /opt/server/hadoop/etc/hadoop/yarn-site.xml
添加如下内容:
<property>
<name>yarn.resourcemanager.am.max-attempts</name>
<value>4</value>
</property>
3)同步yarn-site.xml配置文件
cd /opt/server/hadoop/etc/hadoop
xsync yarn-site.xml
4)启动HDFS集群和YARN集群
[root@node1 ~]# hdp.sh start
5)添加HADOOP_CONF_DIR
环境变量(集群所有机器)
# 添加环境变量
vim /etc/profile
添加内容:
export HADOOP_CONF_DIR=/opt/server/hadoop-3.3.0/etc/hadoop
环境变量生效
source /etc/profile
6)上传软件及解压
[root@node1 ~]# cd /opt/software/
上传软件包:flink-1.13.1-bin-scala_2.11.tgz
[root@node1 software]# tar -zxf flink-1.14.5-bin-scala_2.12.tgz -C /opt/server/
7)将Flink依赖Hadoop 框架JAR包上传至/opt/server/flink-1.14.5/lib
目录
8)配置HA高可用,依赖Zookeeper及重试次数(node1
操作)
# 修改配置文件
vim /opt/server/flink-1.14.5/conf/flink-conf.yaml
添加如下内容:
high-availability: zookeeper
high-availability.storageDir: hdfs://node1:8020/flink/yarn-ha/
high-availability.zookeeper.quorum: node1:2181,node2:2181,node3:2181
high-availability.zookeeper.path.root: /flink-yarn-ha
high-availability.cluster-id: /cluster_yarn
yarn.application-attempts: 10
9)集群所有机器,同步分发Flink 安装包,便于任意机器提交运行Flink Job。
10)启动Zookeeper集群
zk.sh start
11)测试
- 准备测试数据,测试运行批处理词频统计WordCount程序
[root@node1 ~]# vim /opt/data/words.txt
- 添加数据
spark python spark hive spark hive
python spark hive spark python
mapreduce spark hadoop hdfs hadoop spark
hive mapreduce
- 数据文件上传
[root@node1 ~]# hdfs dfs -mkdir -p /wordcount/input/
[root@node1 ~]# hdfs dfs -put /root/words.txt /wordcount/input/
- 执行以下命令
export HADOOP_CLASSPATH=`hadoop classpath`
/opt/server/flink-1.14.5/bin/flink run-application \
-t yarn-application \
-Djobmanager.memory.process.size=1024m \
-Dtaskmanager.memory.process.size=1024m \
-Dtaskmanager.numberOfTaskSlots=1 \
/opt/server/flink-1.14.5/examples/batch/WordCount.jar \
--input hdfs://node1:8020/wordcount/input
.14.5/conf/flink-conf.yaml
添加如下内容:
```properties
high-availability: zookeeper
high-availability.storageDir: hdfs://node1:8020/flink/yarn-ha/
high-availability.zookeeper.quorum: node1:2181,node2:2181,node3:2181
high-availability.zookeeper.path.root: /flink-yarn-ha
high-availability.cluster-id: /cluster_yarn
yarn.application-attempts: 10
9)集群所有机器,同步分发Flink 安装包,便于任意机器提交运行Flink Job。
10)启动Zookeeper集群
zk.sh start
11)测试
- 准备测试数据,测试运行批处理词频统计WordCount程序
[root@node1 ~]# vim /opt/data/words.txt
- 添加数据
spark python spark hive spark hive
python spark hive spark python
mapreduce spark hadoop hdfs hadoop spark
hive mapreduce
- 数据文件上传
[root@node1 ~]# hdfs dfs -mkdir -p /wordcount/input/
[root@node1 ~]# hdfs dfs -put /root/words.txt /wordcount/input/
- 执行以下命令
export HADOOP_CLASSPATH=`hadoop classpath`
/opt/server/flink-1.14.5/bin/flink run-application \
-t yarn-application \
-Djobmanager.memory.process.size=1024m \
-Dtaskmanager.memory.process.size=1024m \
-Dtaskmanager.numberOfTaskSlots=1 \
/opt/server/flink-1.14.5/examples/batch/WordCount.jar \
--input hdfs://node1:8020/wordcount/input