前言
- 竞赛技术平台软件、要求 [第一阶段]
- 笔者环境:
- 环境系统:Centos 7,【三台:Master,Slave1,Slave2】
- 操作系统:Windows 11 家庭版 [21H2]
- 操作工具:Xshell 7、VMware 16【创建虚机】
- 搭建Hadoop环境:完全分布式
- 环境用软件:
天翼云盘下载:点我跳转
百度云盘下载:点我跳转[密码6273]
- 笔者操作习惯:
systemctl stop firewalld
搭建环境准备
- 给主机改名
hostnamectl set-hostname master
bash
[root@master ~]
hostnamectl set-hostname slave1
bash
[root@slave1 ~]
hostnamectl set-hostname slave2
bash
[root@slave2 ~]
- 安装必备插件软件
?????????????????三台主机都要安装
yum install -y vim
yum install -y ntp
yum install -y net-tools
yum install -y lrzsz
?????????????????Master主机单独安装
yum install -y gcc
- 修改IP映射文件并分发给其他两台主机
vim /etc/hosts
[root@master ~]
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.38.144 master
192.168.38.145 slave1
192.168.38.146 slave2
scp /etc/hosts slave1:/etc/
笔者的Linux系统没有创建其他用户,如果创建了其他用户,需要将该文件发送到你用到的用户的目录下,一般为root,书写方式请加上用户名@slave1:/etc/
[root@master ~]
[root@master ~]
- 配置三台主机免密互通
[root@master ~]
[root@slave1 ~]
[root@slave2 ~]
[root@master ~]
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
bf:cb:43:5b:6e:7f:17:66:d2:c0:b4:71:f7:0d:1a:22 root@master
The key's randomart image is:
+--[ RSA 2048]----+
| |
| E . .o...|
| . .oo+.+|
| .+ o|
| S o |
| .. .. = |
| ..+ + .|
| .o.o o|
| ++ ....|
+-----------------+
不管是Linux主机中操作,还是使用Xshell工具操作,输入密码是没有回显的,故看不到输入的密码
ssh-copy-id master
ssh-copy-id master
ssh-copy-id master
[root@master ~]
The authenticity of host 'master (192.168.38.141)' can't be established.
ECDSA key fingerprint is 37:7c:ab:d9:86:14:b2:fe:9c:17:3d:5d:3a:ff:ce:c1.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@master's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'master'"
and check to make sure that only the key(s) you wanted were added.
密钥默认的存放地址为
/root/.ssh/
,上方生成密钥中,以及操作生成密钥时均可查看详细信息
公钥合并文件为
/root/.ssh/
下的
authorized_keys
[root@master ~]
[root@master ~]
[root@master ~]
root@slave1's password:
authorized_keys 100% 1179 1.2KB/s 00:00
[root@master ~]# scp /root/.ssh/authorized_keys slave2:/root/.ssh/
root@slave2's password:
authorized_keys
退出为exit
ssh master
ssh slave1
ssh slave2
- 上传环境所需软件至Master主机
将上方提到的软件上传到
Master主机
的
/usr/tar/
,上方生成密钥中,以及操作生成密钥时均可查看详细信息
Xshell用户可进入到
/usr/tar
目录后选中全部包
拖动到Xshell窗口
因后期需要使用
Master主机
分发给其他
两台从机
故只需将包上传到Master主机仅可,减少不必要的流量消耗和文件传输时间
[root@master tar]
/usr/tar
[root@master tar]
总用量 1732092
-rw-r--r--. 1 root root 55711670 10月 19 21:42 apache-flume-1.7.0-bin.tar.gz
-rw-r--r--. 1 root root 232234292 10月 19 21:42 apache-hive-2.3.4-bin.tar.gz
-rw-r--r--. 1 root root 289890742 11月 21 18:10 flink-1.10.2-bin-scala_2.11.tgz
-rw-r--r--. 1 root root 218720521 10月 19 21:42 hadoop-2.7.7.tar.gz
-rw-r--r--. 1 root root 144935989 10月 19 21:42 jdk-8u291-linux-x64.tar.gz
-rw-r--r--. 1 root root 55751827 10月 19 21:42 kafka_2.11-2.0.0.tgz
-rw-r--r--. 1 root root 543856640 10月 19 21:43 mysql-5.7.34-1.el7.x86_64.rpm-bundle.tar
-rw-r--r--. 1 root root 1006904 10月 19 21:44 mysql-connector-java-5.1.49.jar
-rw-r--r--. 1 root root 1711660 10月 19 21:44 redis-4.0.1.tar.gz
-rw-r--r--. 1 root root 28678231 11月 9 18:55 scala-2.11.8.tgz
-rw-r--r--. 1 root root 201142612 10月 19 21:41 spark-2.1.1-bin-hadoop2.7.tgz
若使用
VMware
的用户此时可以建立
“快照”
了,搭建完之后可随时恢复重新练习
开始搭建
新建解压目录
mkdir -p /usr/apps/
因
Hive、MySQL
和
Flume
仅需在Master主机上,故暂时不解压,方便发送传输速度,后面会单独
Master
主机上安装
解压安装包到指定目录
[root@master tar]
[root@master tar]
[root@master tar]
[root@master tar]
[root@master tar]
[root@master tar]
配置各个软件环境变量
- 编辑环境变量文件
vim /etc/profile
[root@master apps]
- 修改内容如下 [文章末添加]大写"G"快速定位文章底部
for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null
fi
fi
done
unset i
unset -f pathmunge
export JAVA_HOME=/usr/apps/jdk1.8.0_291
export PATH=$JAVA_HOME/bin:$PATH
export HADOOP_HOME=/usr/apps/hadoop-2.7.7
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export SCALA_HOME=/usr/apps/scala-2.11.8
export PATH=$SCALA_HOME/bin:$PATH
export SPARK_HOME=/usr/apps/spark-2.1.1-bin-hadoop2.7
export PATH=$SPARK_HOME/bin:$PATH
export FLINK_HOME=/usr/apps/flink-1.10.2
export PATH=$FLINK_HOME/bin:$PATH
export KAFKA_HOME=/usr/apps/kafka_2.11-2.0.0
export PATH=$KAFKA_HOME/bin:$PATH
配置Hadoop分布式文件系统
- 进入Hadoop配置文件路径
cd /usr/apps/hadoop-2.7.7/etc/hadoop/
[root@master apps]
[root@master hadoop]
总用量 152
-rw-r--r--. 1 1000 ftp 4436 7月 19 2018 capacity-scheduler.xml
-rw-r--r--. 1 1000 ftp 1335 7月 19 2018 configuration.xsl
-rw-r--r--. 1 1000 ftp 318 7月 19 2018 container-executor.cfg
-rw-r--r--. 1 1000 ftp 774 7月 19 2018 core-site.xml
-rw-r--r--. 1 1000 ftp 3670 7月 19 2018 hadoop-env.cmd
-rw-r--r--. 1 1000 ftp 4224 7月 19 2018 hadoop-env.sh
-rw-r--r--. 1 1000 ftp 2598 7月 19 2018 hadoop-metrics2.properties
-rw-r--r--. 1 1000 ftp 2490 7月 19 2018 hadoop-metrics.properties
-rw-r--r--. 1 1000 ftp 9683 7月 19 2018 hadoop-policy.xml
-rw-r--r--. 1 1000 ftp 775 7月 19 2018 hdfs-site.xml
-rw-r--r--. 1 1000 ftp 1449 7月 19 2018 httpfs-env.sh
-rw-r--r--. 1 1000 ftp 1657 7月 19 2018 httpfs-log4j.properties
-rw-r--r--. 1 1000 ftp 21 7月 19 2018 httpfs-signature.secret
-rw-r--r--. 1 1000 ftp 620 7月 19 2018 httpfs-site.xml
-rw-r--r--. 1 1000 ftp 3518 7月 19 2018 kms-acls.xml
-rw-r--r--. 1 1000 ftp 1527 7月 19 2018 kms-env.sh
-rw-r--r--. 1 1000 ftp 1631 7月 19 2018 kms-log4j.properties
-rw-r--r--. 1 1000 ftp 5540 7月 19 2018 kms-site.xml
-rw-r--r--. 1 1000 ftp 11801 7月 19 2018 log4j.properties
-rw-r--r--. 1 1000 ftp 951 7月 19 2018 mapred-env.cmd
-rw-r--r--. 1 1000 ftp 1383 7月 19 2018 mapred-env.sh
-rw-r--r--. 1 1000 ftp 4113 7月 19 2018 mapred-queues.xml.template
-rw-r--r--. 1 1000 ftp 758 7月 19 2018 mapred-site.xml.template
-rw-r--r--. 1 1000 ftp 10 7月 19 2018 slaves
-rw-r--r--. 1 1000 ftp 2316 7月 19 2018 ssl-client.xml.example
-rw-r--r--. 1 1000 ftp 2697 7月 19 2018 ssl-server.xml.example
-rw-r--r--. 1 1000 ftp 2250 7月 19 2018 yarn-env.cmd
-rw-r--r--. 1 1000 ftp 4567 7月 19 2018 yarn-env.sh
-rw-r--r--. 1 1000 ftp 690 7月 19 2018 yarn-site.xml
- 复制mapred-site.xml.template模板为mapred-site.xml
cp mapred-site.xml.template mapred-site.xml.template
[root@master hadoop]
- 编辑hadoop-env.sh
vim hadoop-env.sh
- 25行的JAVA_HOME需要更改 [:set nu]为显示行号,且该命令下文不再提示
- 示例
19
20
21
22
23
24
25 export JAVA_HOME=/usr/apps/jdk1.8.0_291
26
27
28
29
30
31
- 编辑core-site.xml
vim core-site.xml
- 你可能需要用到的代码模板 [ 便于复制 ]
- Hadoop配置文件中几乎都会用到该模板 [ 真实比赛不会提供 ]
<property>
<name></name>
<value></value>
</property>
<configuration>
<property>
<!-- 指定HDFS中NameNode的地址-->
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<!-- 指定Hadoop运行时产生文件的存储目录-->
<name>hadoop.tmp.dir</name>
<value>/usr/apps/data/hadoop</value>
</property>
</configuration>
- 编辑hdfs-site.xml
vim hdfs-site.xml
- 示例 [ 文章末添加,注意标签 ] 如下副本数,根据实际操作选择几台
<configuration>
<property>
<!-- 指定文件副本数 -->
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<!-- 指定secondary主机和端口 -->
<!-- secondary:辅助管理namenode主节点 -->
<name>dfs.namenode.secondary.http-address</name>
<value>slave1:50090</value>
</property>
</configuration>
- 编辑mapred-site.xml
vim mapred-site.xml
<configuration>
<property>
<!-- 指定MapReduce运行时框架,这里指定在Yarn上,默认是local -->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
- 编辑yarn-site.xml
vim yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<!-- yarn的主节点在master主机上 -->
<name>yarn.resourcemanager.hostname</name>
<value>master<value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
- 编辑slaves
vim slaves
master
slave1
slave2
配置Spark
- 进入Spark配置文件路径
cd /usr/apps/spark-2.1.1-bin-hadoop2.7/conf/
[root@master hadoop]
[root@master conf]
总用量 32
-rw-r--r--. 1 500 500 987 4月 26 2017 docker.properties.template
-rw-r--r--. 1 500 500 1105 4月 26 2017 fairscheduler.xml.template
-rw-r--r--. 1 500 500 2025 4月 26 2017 log4j.properties.template
-rw-r--r--. 1 500 500 7313 4月 26 2017 metrics.properties.template
-rw-r--r--. 1 500 500 865 4月 26 2017 slaves.template
-rw-r--r--. 1 500 500 1292 4月 26 2017 spark-defaults.conf.template
-rwxr-xr-x. 1 500 500 3960 4月 26 2017 spark-env.sh.template
- 复制spark-env.sh.template模板为spark-env.sh
cp spark-env.sh.template spark-env.sh
[root@master conf]
- 编辑spark-env.sh
vim spark-env.sh
export JAVA_HOME=/usr/apps/jdk1.8.0_291
export HADOOP_HOME=/usr/apps/hadoop-2.7.7
export HADOOP_CONF_DIR=/usr/apps/hadoop-2.7.7/etc/hadoop
export SCALA_HOME=/usr/apps/scala-2.11.8
export SPARK_MASTER_IP=master
export SPARK_WORKER_MEMORY=8G
export SPARK_WORKER_CORES=4
export SPARK_WORKER_INSTANCES=1
- 编辑slaves
- 有心的读者可能看到有一个文件:slaves.template无需复制该模板文件,直接新建编辑slaves文件即可
vim slaves
slave1
slave2
配置Flink
- 进入Flink配置文件路径
cd /usr/apps/flink-1.10.2/conf
[root@master hadoop]
[root@master conf]
总用量 60
-rw-r--r--. 1 root root 10202 8月 15 2020 flink-conf.yaml
-rw-r--r--. 1 root root 2138 8月 15 2020 log4j-cli.properties
-rw-r--r--. 1 root root 1884 8月 15 2020 log4j-console.properties
-rw-r--r--. 1 root root 1939 8月 15 2020 log4j.properties
-rw-r--r--. 1 root root 1709 8月 15 2020 log4j-yarn-session.properties
-rw-r--r--. 1 root root 2294 8月 15 2020 logback-console.xml
-rw-r--r--. 1 root root 2331 8月 15 2020 logback.xml
-rw-r--r--. 1 root root 1550 8月 15 2020 logback-yarn.xml
-rw-r--r--. 1 root root 15 8月 15 2020 masters
-rw-r--r--. 1 root root 10 8月 15 2020 slaves
-rw-r--r--. 1 root root 5424 8月 15 2020 sql-client-defaults.yaml
-rw-r--r--. 1 root root 1434 8月 15 2020 zoo.cfg
- 编辑flink-conf.yaml
vim flink-conf.yaml
- 示例 [ 内存和TaskSlots根据要求更改 ]
jobmanager.rpc.address: master
jobmanager.rpc.port: 6123
jobmanager.heap.size: 2048m
taskmanager.memory.process.size: 4096m
taskmanager.numberOfTaskSlots: 5
parallelism.default: 3
- 编辑masters
vim masters
master:8081
- 编辑slaves
vim slaves
slave1
slave2
配置Kafka
- 进入Kafka配置文件路径
cd /usr/apps/kafka_2.11-2.0.0/config/
[root@master config]
/usr/apps/kafka_2.11-2.0.0/config
[root@master config]
总用量 68
-rw-r--r--. 1 root root 906 7月 24 2018 connect-console-sink.properties
-rw-r--r--. 1 root root 909 7月 24 2018 connect-console-source.properties
-rw-r--r--. 1 root root 5321 7月 24 2018 connect-distributed.properties
-rw-r--r--. 1 root root 883 7月 24 2018 connect-file-sink.properties
-rw-r--r--. 1 root root 881 7月 24 2018 connect-file-source.properties
-rw-r--r--. 1 root root 1111 7月 24 2018 connect-log4j.properties
-rw-r--r--. 1 root root 2262 7月 24 2018 connect-standalone.properties
-rw-r--r--. 1 root root 1221 7月 24 2018 consumer.properties
-rw-r--r--. 1 root root 4727 7月 24 2018 log4j.properties
-rw-r--r--. 1 root root 1919 7月 24 2018 producer.properties
-rw-r--r--. 1 root root 6851 7月 24 2018 server.properties
-rw-r--r--. 1 root root 1032 7月 24 2018 tools-log4j.properties
-rw-r--r--. 1 root root 1169 7月 24 2018 trogdor.conf
-rw-r--r--. 1 root root 1023 7月 24 2018 zookeeper.properties
- 编辑server.properties
vim server.properties
- 示例 [ 上半部分仅列出修改内容,下半部分贴出全部配置文件 ]
broker.id=1
listeners=PLAINTEXT://master:9092
host.name=master
advertised.listeners=PLAINTEXT://master:9092
log.dirs=/usr/apps/data/kafka-logs
num.partitions=3
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
transaction.state.log.min.isr=2
zookeeper.connect=master:2181,slave1:2181,slave2:2181
broker.id=1
broker.id=1
listeners=PLAINTEXT://master:9092
host.name=master
advertised.listeners=PLAINTEXT://master:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/usr/apps/data/kafka-logs
num.partitions=3
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
transaction.state.log.min.isr=2
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=master:2181,slave1:2181,slave2:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
- 编辑zookeeper.properties
vim zookeeper.properties
dataDir=/usr/apps/data/zk/zkdata
dataLogDir=/usr/apps/data/zk/zklog
clientPort=2181
tickTime=2000
initLimit=10
syncLimit=5
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
- 新建文件夹:zkdata、zklog
mkdir -p /usr/apps/data/zk/zkdata
mkdir -p /usr/apps/data/zk/zklog
[root@master config]
[root@master config]
- 向文件输入内容:输入内容自动创建文件
mkdir -p /usr/apps/data/zk/zkdata
mkdir -p /usr/apps/data/zk/zklog
echo 1 > /usr/apps/data/zk/zkdata/myid
[root@master config]
1
分发
分发环境变量文件
scp /etc/profile slave1:/etc/
scp /etc/profile slave2:/etc/
[root@master ~]
profile 100% 2319 2.3KB/s 00:00
[root@master ~]
profile 100% 2319 2.3KB/s 00:00
分发配置完毕的文件
- 分发时间可能有点漫长,耐心等待。若出现需要输入密码,请重新配置免密!
scp -r /usr/apps/ slave1:/usr/
scp -r /usr/apps/ slave2:/usr/
[root@master ~]
[root@master ~]
修改从机配置文件
- 修改Kafka中server.properties配置文件
vim /usr/apps/kafka_2.11-2.0.0/config/server.properties
[root@slave1 ~]
broker.id=2
listeners=PLAINTEXT://slave1:9092
host.name=slave1
advertised.listeners=PLAINTEXT://slave1:9092
[root@slave2 ~]
broker.id=3
listeners=PLAINTEXT://slave2:9092
host.name=slave1
advertised.listeners=PLAINTEXT://slave2:9092
- 修改zookeeper的myid文件的值
vim /usr/apps/data/zk/zkdata/myid
[root@slave1 ~]
[root@slave1 ~]
2
[root@slave2 ~]
[root@slave2 ~]
3
启动各个软件
systemctl status firewalld
systemctl stop firewalld
systemctl start firewalld
启动Hadoop集群
- 启动HDFS分布式文件系统
|