SPARK集群搭建手册
0.写在前面的话
上学期上的课的大作业的产物。集群搭建基本是我一个人完成的,虽然因为各种因素,最后的成果很差,但也算是一段学习的经历,今天想起来放在这里记录一下。
1.集群设计
1.1 具体配置:阿里云云服务器ECS 五台
-
实例:共享计算型 n4系列 III1核 2GB
-
I/O 优化实例:I/O 优化实例
-
系统盘:高效云盘/dev/xvda40GB
-
带宽:1Mbps按固定带宽
-
CPU:1核
-
可用区:华北 2 可用区 E
-
操作系统:Linux64位CentOS 7.3 64位
-
内存:2GB
-
地域:华北 2
-
网络类型:专有网络
1.2 网络配置信息:
Hostname | 内网IP | 公网IP |
---|---|---|
cMaster | 172.17.233.2 | 47.94.4.243 |
cSlave0 | 172.28.178.24 | |
cSlave1 | 172.29.104.76 | |
cSlave2 | 172.16.110.250 | |
cSlave3 | 172.17.126.146 |
2.集群搭建操作记录
2.1 ECS云企业网内网通信
cSlave在阿里云上对云企业网跨账号授权
cMaster创建云企业网实例,加载所有的cSlave
2.2 修改hostname,创建hosts映射
#修改hostname
vim /etc/hostname
#改为对应的hostname
#修改hosts映射
vim /etc/hosts
#具体修改内容见1.2
#删除原有内容,添加
内网IP1 Hostname1
内网IP2 Hostname2
…… ……
2.3 安装SPARK、HADOOP、JDK并配置环境
#使用xshell连接到远程服务器
#安装rz指令
yum -y install lrzsz
#使用rz指令从本地传输文件到远程主机(rz指令会将文件拷贝到当前目录下)
以下是可用的一个SPARK、JDK、HADOOP版本组合
链接:https://pan.baidu.com/s/14uRiyR7Lk7b8Q6-Wp1zioA
提取码:g2t6
安装JAVA
#安装JAVA环境
#解压JKD到/usr目录下
tar -zxvf jdk-8u261-linux-x64.tar.gz -C /usr
#配置环境变量
vim /etc/profile
#添加内容
export JAVA_HOME=/usr/jkd1.8.0_261
export PATH=$PATH:$JAVA_HOME/bin
#装载环境变量
source ~/.bashrc
安装Hadoop
#安装Hadoop环境
#解压Hadoop到/usr路径下
tar -zxvf hadoop-3.2.1.tar.gz -C /usr
#配置环境变量
vim /etc/profile
#添加内容
export HADOOP_HOME=/usr/hadoop-3.2.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
#装在环境变量
source ~/.bashrc
#Hadoop配置
vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
#添加
export JAVA_HOME=/usr/jkd1.8.0_261
#仅cMaster
#修改workers文件
vim $HADOOP_HOME/etc/hadoop/workers
删除localhost,添加cSlave主机ID
#配置core-site.xml
vim $HADOOP_HOME/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://[cMaster]:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop</value>
</property>
</configuration>
vim $HADOOP_HOME/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
vim $HADOOP_HOME/etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>[本机hostname]</value>
</property>
</configuration>
#格式化,仅master运行
hdfs namenode -format
#master启动namenode
hdfs --daemon start namenode
#slave启动datanode
hdfs --daemon start datanode
#master启动resourcemanager
yarn --daemon start resourcemanager
#slave启动nodemanager
yarn --daemon start nodemanager
安装SPARK
#SPARK安装
#将SPARK解压至/usr
tar -zxvf spark-3.0.1-bin-hadoop3.2.tgz -C /usr
#启动master节点
/usr/spark-3.0.1-bin-hadoop3.2/sbin/start-master.sh
#启动worker节点
/usr/spark-3.0.1-bin-hadoop3.2/sbin/start-slave.sh spark://[cMasterIP地址,本语境中是172.17.233.2]:7077
#进入spark安装目录
cd /usr/spark-3.0.1-bin-hadoop3.2
#使得控制台只打印ERROR级的log
cp ./conf/log4j.properties.template ./conf/log4j.properties
vim ./conf/log4j.properties
将log4j.rootCategory=INFO, console改为log4j.rootCategory=ERROR, console
#安装目录下,尝试运行实例程序
./bin/run-example SparkPi
#结果是3.14……
3.验证
3.1 JPS
jps
#以slave为例
[root@cSlave0 /]# jps
5763 Jps
4855 DataNode
4410 Worker
3.2 HDFS状态
#查看hdfs状态
hdfs dfsadmin -report
Configured Capacity: 42139451392 (39.25 GB)
Present Capacity: 35620638720 (33.17 GB)
DFS Remaining: 35620585472 (33.17 GB)
DFS Used: 53248 (52 KB)
DFS Used%: 0.00%
Replicated Blocks:
Under replicated blocks: 2
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0
Low redundancy blocks with highest priority to recover: 2
Pending deletion blocks: 0
Erasure Coded Block Groups:
Low redundancy block groups: 0
Block groups with corrupt internal blocks: 0
Missing block groups: 0
Low redundancy blocks with highest priority to recover: 0
Pending deletion blocks: 0
-------------------------------------------------
Live datanodes (1):
Name: 172.28.178.24:9866 (cSlave0)
Hostname: cSlave0
Decommission Status : Normal
Configured Capacity: 42139451392 (39.25 GB)
DFS Used: 53248 (52 KB)
Non DFS Used: 4354658304 (4.06 GB)
DFS Remaining: 35620585472 (33.17 GB)
DFS Used%: 0.00%
DFS Remaining%: 84.53%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Sun Oct 11 00:53:19 CST 2020
Last Block Report: Sun Oct 11 00:15:58 CST 2020
Num of Blocks: 2
3.3 hdfs上传文件和spark下载文件
#上传文件1.txt到hdfs根目录下
hdfs dfs -put /usr/1.txt /
2020-10-11 00:30:54,708 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
#查看hdfs目录
hdfs dfs -ls /
Found 3 items
-rw-r--r-- 3 root supergroup 9 2020-10-11 00:30 /1.txt
-rw-r--r-- 3 root supergroup 9 2020-10-11 00:23 /data
drwxr-xr-x - root supergroup 0 2020-10-11 00:29 /user
hdfs://cMaster:9000/
#使用spark-shell下载hdfs中的1.txt并打印其中内容
scala> sc.textFile("hdfs://cMaster:9000/1.txt")
res0: org.apache.spark.rdd.RDD[String] = hdfs://cMaster:9000/1.txt MapPartitionsRDD[1] at textFile at <console>:25
scala> res0.collect().foreach{println}
for test
#验证成功!