集群部署测试实训
1、组件版本
组件 |
版本 |
jdk |
1.8 |
hadoop |
3.1.3 |
hive |
3.1.2 |
Hbase |
2.2.3 |
Kafka |
2.4.1 |
redis |
6.2.6 |
flume |
1.9.0 |
maxwell |
1.29.0 |
flink |
1.14.0 |
clickhouse |
21.9.4 |
mysql |
5.7 |
2、系统环境
- firewalld
- SSH
- NTP
- JDK
- MySQL
3、hadoop 完全分布式
步骤一、解压并重命名hadoop
[root@master ~]#
tar -xzvf /chinaskills/hadoop-3.1.3.tar.gz -C /usr/local/src/
mv /usr/local/src/hadoop-3.1.3 /usr/local/src/hadoop
步骤二、配置hadoop环境变量
[root@master ~]#
vim /root/.bash_profile
配置内容:
export HADOOP_HOME=/usr/local/src/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
加载环境变量
source /root/.bash_profile
步骤三、配置hadoop-env.sh
[root@master ~]#
vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
配置内容:
export JAVA_HOME=/usr/local/src/java
步骤四、配置core-site.xml
[root@master ~]#
vim $HADOOP_HOME/etc/hadoop/core-site.xml
配置内容:
<property>
<!--namenode的URL地址-->
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<property>
<!--hadoop临时文件路径-->
<name>hadoop.tmp.dir</name>
<value>/usr/local/src/hadoop/dfs/tmp</value>
</property>
<property>
<!--SequenceFiles 中使用的读/写缓冲区的大小。-->
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<!--配置允许访问的主机-->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<!--配置允许访问的用户组-->
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<property>
<!--配置允许访问的用户-->
<name>hadoop.proxyuser.root.users</name>
<value>*</value>
</property>
步骤五、配置hdfs-site.xml
[root@master ~]#
vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml
配置内容:
<property>
<!--NameNode 持久存储命名空间和事务日志的本地文件系统上的路径。-->
<name>dfs.namenode.name.dir</name>
<value>/usr/local/src/hadoop/dfs/name</value>
</property>
<property>
<!--用于大型文件系统的 HDFS 块大小为 256MB-->
<name>dfs.blocksize</name>
<value>268435456</value>
</property>
<property>
<!--设置NameNode 服务器线程来处理来自大量 DataNode 的 RPC-->
<name>dfs.namenode.handler.count</name>
<value>100</value>
</property>
<property>
<!--DataNode的本地文件系统上应存储其块的路径的逗号分隔列表。-->
<name>dfs.datanode.data.dir</name>
<value>/usr/local/src/hadoop/dfs/data</value>
</property>
步骤六、配置yarn-site.xml
[root@master ~]#
vim $HADOOP_HOME/etc/hadoop/yarn-site.xml
配置内容:
<property>
<!--配置resourcemanager的主机-->
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<!--逗号分隔的服务列表-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<!--在资源管理器中分配给每个容器请求的最小内存限制。以 MB 为单位-->
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>1024</value>
</property>
<property>
<!--在资源管理器中分配给每个容器请求的最大内存限制。以 MB 为单位-->
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>4096</value>
</property>
<property>
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉-->
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉-->
<name>yarn.nodemanager.vmem-check-enabled </name>
<value>false</value>
</property>
<property>
<!--可以为容器分配的 vcore 数量,这不用于限制 YARN 容器使用的物理内核数。默认为8-->
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>5</value>
</property>
步骤七、配置mapred-site.xml
[root@master ~]#
vim $HADOOP_HOME/etc/hadoop/mapred-site.xml
配置内容:
<property>
<!--执行框架设置为 Hadoop YARN-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/src/hadoop</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/src/hadoop</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/src/hadoop</value>
</property>
<property>
<!--map任务的资源限制-->
<name>mapreduce.map.memory.mb</name>
<value>2048</value>
</property>
<property>
<!--map任务子jvm的堆大小-->
<mame>mapreduce.map.java.opts</mame>
<value>-Xmx1536M</value>
</property>
<property>
<!--reduce任务的资源限制-->
<name>mapreduce.reduce.memory.mb</name>
<value>4096</value>
</property>
<property>
<!--reduce任务子jvm的堆大小-->
<mame>mapreduce.map.java.opts</mame>
<value>-Xmx2560M</value>
</property>
<property>
<!--MapReduce JobHistory 服务器主机:端口-->
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<!--MapReduce JobHistory Server Web UI主机:端口-->
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
<property>
<!--MapReduce 作业写入历史文件的目录-->
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>/mr-history/tmp</value>
</property>
<property>
<!--历史文件由 MR JobHistory Server 管理的目录。-->
<name>mapreduce.jobhistory.done-dir</name>
<value>/mr-history/done</value>
</property>
步骤八、配置works
[root@master ~]#
vim $HADOOP_HOME/etc/hadoop/workers
配置内容:
master
slave1
slave2
步骤九、修改start-dfs.sh和start-yarn.s
[root@master ~]#
vim $HADOOP_HOME/sbin/start-dfs.sh
配置内容:
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
vim $HADOOP_HOME/sbin/start-yarn.sh
配置内容:
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
步骤十、修改stop-dfs.sh 和stop-yarn.sh
[root@master ~]#
vim $HADOOP_HOME/sbin/stop-dfs.sh
配置内容:
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
vim $HADOOP_HOME/sbin/stop-yarn.sh
配置内容:
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
步骤十一、分发文件
[root@master ~]#
scp -r /usr/local/src/hadoop root@slave1:/usr/local/src/
scp -r /usr/local/src/hadoop root@slave2:/usr/local/src/
scp /root/.bash_profile root@slave1:/root/
scp /root/.bash_profile root@slave2:/root/
步骤十二、格式化namenode
[root@master ~]#
hdfs namenode -format
步骤十三、启动集群
[root@master ~]#
start-all.sh
步骤十四、查看jps守护进程
[root@master ~]#
jps
步骤十五、运行pi程序测试
[root@master ~]#
yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi 10 10
4、Hive部署
步骤一、解压并重命名
[root@master ~]#
tar -xzvf /chinaskills/apache-hive-3.1.2-bin.tar.gz -C /usr/local/src/
mv /usr/local/src/apache-hive-3.1.2-bin /usr/local/src/hive
步骤二、配置环境变量
[root@master ~]#
vim /root/.bash_profile
配置内容
export HIVE_HOME=/usr/local/src/hive
export PATH=$PATH:$HIVE_HOME/bin
加载环境变量
source /root/.bash_profile
步骤三、配置hive-site.xml
[root@master ~]#
cp /usr/local/src/hive/conf/hive-default.xml.template /usr/local/src/hive/conf/hive-site.xml
vim /usr/local/src/hive/conf/hive-site.xml
配置内容:
<property>
<!--连接数据库URL-->
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&useSSL=false</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>
<property>
<!--本机表的默认位置的URI-->
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<!--metasoter 远程地址,默认端口9083-->
<name>hive.metastore.uris</name>
<value>thrift://master:9083</value>
</property>
<property>
<!--客户端显示数据表头信息-->
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<property>
<!--客户端显示当前数据库信息-->
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
<property>
<!--绑定的 TCP 接口的主机-->
<name>hive.server2.thrift.bind.host</name>
<value>master</value>
</property>
<property>
<!--绑定的TCP的主机端口,默认10000-->
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<property>
<!--最小工作线程数,默认为5-->
<name>hive.server2.thrift.min.worker.threads</name>
<value>5</value>
</property>
<property>
<!--最大工作线程数,默认为500-->
<name>hive.server2.thrift.max.worker.threads</name>
<value>500</value>
</property>
<property>
<!--metasoter 远程地址,默认端口9083-->
<name>hive.metastore.uris</name>
<value>thrift://master:9083</value>
</property>
<property>
<!--Hive 作业的暂存空间-->
<name>hive.exec.scratchdir</name>
<value>/tmp/hiveinfo</value>
</property>
步骤四 添加mysql驱动包
[root@master ~]#
cp /chinaskills/mysql-connector-java-5.1.47.jar /usr/local/src/hive/lib/
步骤五、guava jar包版本冲突
[root@master ~]#
rm -rf /usr/local/src/hive/lib/guava-19.0.jar
cp /usr/local/src/hadoop/share/hadoop/common/lib/guava-27.0-jre.jar /usr/local/src/hive/lib/
步骤六 hive初始化
[root@master ~]#
schematool -dbType mysql -initSchema
步骤七、开启metastore和H2S
[root@master ~]#
nohup hive --service metastore > metastore.log 2>&1 &
nohup hive --service hiveserver2 > H2S.log 2>&1 &
5、zookeeper分布式
步骤一、解压并重命名
[root@master ~]#
tar -xzvf /chinaskills/apache-zookeeper-3.7.1-bin.tar.gz -C /usr/local/src/
mv /usr/local/src/apache-zookeeper-3.7.1-bin /usr/local/src/zookeeper
步骤二、配置环境变量
[root@master ~]#
vim /root/.bash_profile
配置内容:
export ZOOKEEPER_HOME=/usr/local/src/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
步骤三 配置zoo.cfg
[root@master ~]#
cp /usr/local/src/zookeeper/conf/zoo_sample.cfg /usr/local/src/zookeeper/conf/zoo.cfg
vim /usr/local/src/zookeeper/conf/zoo.cfg
配置内容:
dataDir=/usr/local/src/zookeeper/data
dataLogDir=/usr/local/src/zookeeper/logs
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
步骤四 配置myid文件
[root@master ~]#
mkdir /usr/local/src/zookeeper/{data,logs}
echo "1" > /usr/local/src/zookeeper/data/myid
source /root/.bash_profile
步骤五 将文件发送给slave1和slave2
scp -r /usr/local/src/zookeeper slave1:/usr/local/src/
scp -r /usr/local/src/zookeeper slave2:/usr/local/src/
scp /root/.bash_profile slave1:/root/
scp /root/.bash_profile slave2:/root/
步骤六 修改slave1和slave2 myid文件
[root@slave1 ~]#
echo 2 > /usr/local/src/zookeeper/data/myid
source /root/.bash_profile
[root@slave2 ~]#
echo 3 > /usr/local/src/zookeeper/data/myid
source /root/.bash_profile
步骤七、启动zk集群
[root@master ~]#
zkServer.sh start
[root@slave1 ~]#
zkServer.sh start
[root@slave2 ~]#
zkServer.sh start
6、hbase 分布式部署
步骤一、解压并重命名
[root@master ~]#
tar -xzvf /chinaskills/hbase-2.2.3-bin.tar.gz -C /usr/local/src/
mv /usr/local/src/hbase-2.2.3 /usr/local/src/hbase
步骤二、配置环境变量并加载
[root@master ~]#
vim /root/.bash_profile
配置内容
export HBASE_HOME=/usr/local/src/hbase
export PATH=$PATH:$HBASE_HOME/bin
加载环境变量:
source /root/.bash_profile
步骤三、配置hbase-env.sh
[root@master ~]#
vim /usr/local/src/hbase/conf/hbase-env.sh
配置内容:
# 配置jdk文件路径
export JAVA_HOME=/usr/local/src/java
# 是否使用hbase的zk服务
export HBASE_MANAGES_ZK=false
步骤四、配置hbase-site.xml
[root@master ~]#
vim /usr/local/src/hbase/conf/hbase-site.xml
配置内容:
<property>
<!--指向 HDFS 实例中的目录-->
<name>hbase.rootdir</name>
<value>hdfs://master:8020/hbase</value>
</property>
<property>
<!--hbase临时文件目录-->
<name>hbase.tmp.dir</name>
<value>/usr/local/src/hbase/tmp</value>
</property>
<property>
<!--是否启用集群模式-->
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<!--设置zookeeper-->
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
<property>
<!--设置zk的数据目录-->
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/src/zookeeper/data</value>
</property>
步骤五、配置regionservers
[root@master ~]#
vim /usr/local/src/hbase/conf/regionservers
配置内容:
slave1
slave2
步骤六、分发文件
[root@master ~]#
scp -r /usr/local/src/hbase root@slave1:/usr/local/src/
scp -r /usr/local/src/hbase root@slave2:/usr/local/src/
scp /root/.bash_profile root@slave1:/root/
scp /root/.bash_profile root@slave2:/root/
步骤七、启动集群
[root@master ~]#
start-hbase.sh
stop-hbase.sh
7、安装部署redis
步骤一、解压并重命名
[root@master ~]#
tar -xzvf /chinaskills/redis-6.2.6.tar.gz -C /usr/local/src/
步骤二、安装yum依赖
[root@master ~]#
yum install -y centos-release-scl yum-plugin-downloadonly devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils --downloadonly --downloaddir=redis_dependencies
步骤三、源码编译
[root@master ~]#
cd /usr/local/src/redis-6.2.6
[root@master redis-6.2.6]#
make
make install
步骤四、配置redis.conf
[root@master ~]#
vim /usr/local/src/redis-6.2.6/redis.conf
配置内容:
# 配置允许访问地址
bind 0.0.0.0 -::1
# 开启后台运行
daemonize yes
步骤五、启动redis服务
[root@master ~]#
redis-server /usr/local/src/redis-6.2.6/redis.conf
步骤六、客户端访问redis
[root@master ~]#
redis-cli --raw
8、部署clickhouse
步骤一、解压click-common
[root@master ~]#
tar -xzvf /chinaskills/clickhouse-common-static-21.1.9.41.tgz -C /usr/local/src/
mv /usr/local/src/clickhouse-common-static-21.1.9.41 /usr/local/src/clickhouse-common-static
步骤二、安装click-common
[root@master ~]#
/usr/local/src/clickhouse-common-static/install/doinst.sh
步骤三、解压click-server
[root@master ~]#
tar -xzvf /chinaskills/clickhouse-server-21.1.9.41.tgz -C /usr/local/src/
mv /usr/local/src/clickhouse-server-21.1.9.41 /usr/local/src/clickhouse-server
步骤四、安装click-server
[root@master ~]#
/usr/local/src/clickhouse-server/install/doinst.sh
步骤五、启动click-server
[root@master ~]#
systemctl start clickhouse-server.service
步骤六、查看状态
[root@master ~]#
systemctl status clickhouse-server.service
步骤七、解压click-client
[root@master ~]#
tar -xzvf /chinaskills/clickhouse-client-21.1.9.41.tgz -C /usr/local/src/
mv /usr/local/src/clickhouse-client-21.1.9.41 /usr/local/src/clickhouse-client
步骤八、安装客户端
[root@master ~]#
/usr/local/src/clickhouse-client/install/doinst.sh
步骤九、客户端连接服务端
[root@master ~]#
clickhouse-client
步骤十、关闭clickhouse
[root@master ~]#
systemctl stop clickhouse-server.service
9、部署flink
模式一、Flink Standalone
步骤一、解压并重命名
[root@master ~]#
tar -xzvf /chinaskills/flink-1.14.0-bin-scala_2.12.tgz -C /usr/local/src/
mv /usr/local/src/flink-1.14.0 /usr/local/src/flink
步骤二、配置环境变量
[root@master ~]#
vim /root/.bash_profile
配置内容:
export FLINK_HOME=/usr/local/src/flink
export PATH=$PATH:$FLINK_HOME/bin
加载环境变量
source /root/.bash_profile
步骤三、启动standalone集群
[root@master ~]#
start-cluster.sh
步骤四、提交一个任务
[root@master ~]#
flink run $FLINK_HOME/examples/batch/WordCount.jar
步骤五、关闭集群
[root@master ~]#
stop-cluster.sh
模式二、Flink 分布式集群
延续上述步骤
步骤一、配置master
[root@master ~]#
vim /usr/local/src/flink/conf/masters
配置内容:
master:8081
步骤二、配置works
[root@master ~]#
vim /usr/local/src/flink/conf/workers
配置内容:
slave1
slave2
步骤三、配置flink-conf.yaml
[root@master ~]#
vim /usr/local/src/flink/conf/flink-conf.yaml
配置内容:
# 设置jobmanager
jobmanager.rpc.address: master
步骤四、配置日志等级
[root@master ~]#
vim /usr/local/src/flink/conf/log4j.properties
配置内容:
rootLogger.level = DEBUG
步骤五、分发文件
[root@master ~]#
scp -r /usr/local/src/flink root@slave1:/usr/local/src
scp -r /usr/local/src/flink root@slave2:/usr/local/src
scp /root/.bash_profile root@slave1:/root
scp /root/.bash_profile root@slave2:/root
步骤六、启动集群
[root@master ~]#
start-cluster.sh
步骤七、关闭集群
[root@master ~]#
stop-cluster.sh
模式三、Flink on Yarn
延用上述配置
步骤一、配置hadoop classpath
[root@master ~]#
vim /root/.bash_profile
配置内容:
export HADOOP_CLASSPATH=$(/usr/local/src/hadoop/bin/hadoop classpath)
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/Hadoop
加载环境变量
source /root/.bash_profile
步骤二、启动一个session会话
[root@master ~]#
yarn-session.sh -n 1 -jm 2048 -tm 4096 -d
步骤三、启动一个job任务
[root@master ~]#
flink run $FLINK_HOME/examples/batch/WordCount.jar
运行结果:
步骤四、关闭session会话
[root@master ~]#
flink list
echo "stop" | yarn-session.sh -id application_1665642382955_0004
步骤五、yarn-per-job提交
[root@master ~]#
flink run -t yarn-per-job $FLINK_HOME/examples/batch/WordCount.jar
报错警告
Exception in thread "Thread-5" java.lang.IllegalStateException: Trying to access closed classloader. Please check if you store classloaders directly or indirectly in static fields. If the stacktrace suggests that the leak occurs in a third party library and cannot be fixed immediately, you can disable this check with the configuration 'classloader.check-leaked-classloader'.
解决措施配置flink-conf.yaml
vim /usr/local/src/flink/conf/flink-conf.yaml
修改配置内容:
classloader.check-leaked-classloader: false
10、Spark on yarn
步骤一、解压并重命名
[root@master ~]#
tar -xzvf /chinaskills/spark-3.1.1-bin-hadoop3.2.tgz -C /usr/local/src/
mv /usr/local/src/spark-3.1.1-bin-hadoop3.2 /usr/local/src/spark
步骤二、配置环境变量
[root@master ~]#
vim /root/.bash_profile
配置内容
export SPARK_HOME=/usr/local/src/spark
export PATH=$PATHL:$SPARK_HOME/bin
加载环境变量
source /root/.bash_profile
步骤三、配置spark-env.sh
[root@master ~]#
cp /usr/local/src/spark/conf/spark-env.sh.template /usr/local/src/spark/conf/spark-env.sh
vim /usr/local/src/spark/conf/spark-env.sh
配置内容:
# java位置
export JAVA_HOME=/usr/local/src/java
# master节点IP或域名
export SPARK_MASTER_IP=master
# worker内存大小
export SPARK_WORKER_MEMORY=2G
# Worker的cpu核数
export SPARK_WORKER_CORES=2
export SCALA_HOME=/usr/local/scala
export SPARK_LOCAL_DIRS=/usr/local/src/spark
# hadoop配置文件路径
export HADOOP_CONF_DIR=/usr/local/src/hadoop/etc/hadoop
步骤四、测试job任务
[root@master ~]#
spark-submit --master yarn --class org.apache.spark.examples.SparkPi /usr/local/src/spark/examples/jars/spark-examples_2.12-3.1.1.jar