1. Hadoop搭建
IP |
主机名 |
CPU |
内存 |
10.0.0.10 |
master |
2C |
5G |
10.0.0.11 |
slave01 |
2C |
5G |
10.0.0.12 |
slave02 |
2C |
5G |
操作系统 |
虚拟化工具 |
ubuntu22.04 |
VMware15 |
链接:https://pan.baidu.com/s/1_6Ux_WIA3P4esPaOvM1p8A?pwd=6666
提取码:6666
1.1 时间同步
apt -y install ntpdate
ntpdate ntp4.aliyun.com
1.2 创建统一工作目录
mkdir -p /export/server/ #软件安装路径
mkdir -p /export/data/ #数据存储路径
mkdir -p /export/software/ #安装包存放路径
1.3. 安装Java
tar zxvf jdk-8u241-linux-x64.tar.gz -C /export/server/
vim /etc/profile
export JAVA_HOME=/export/server/jdk1.8.0_241
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source /etc/profile
# 验证
java -version
- 其它两个节点不是Java(slave01、slave02)
scp -r /export/server/jdk1.8.0_241/ root@10.0.0.11:/export/server/
scp -r /export/server/jdk1.8.0_241/ root@10.0.0.12:/export/server/
scp /etc/profile root@10.0.0.11:/etc/
scp /etc/profile root@10.0.0.12:/etc/
source /etc/profile
# 验证
java -version
1.4 安装Hadoop
tar -zxvf hadoop-3.3.0-Centos7-64-with-snappy.tar.gz -C /export/server/
cd /export/server/hadoop-3.3.0/etc/hadoop/
vim hadoop-env.sh
export JAVA_HOME=/export/server/jdk1.8.0_241
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
vim core-site.xml
<!-- 设置默认使用的文件系统 Hadoop支持file、HDFS、GFS、ali|Amazon云等文件系统 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<!-- 设置Hadoop本地保存数据路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/export/data/hadoop-3.3.0</value>
</property>
<!-- 设置HDFS web UI用户身份 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<!-- 整合hive 用户代理设置 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<!-- 文件系统垃圾桶保存时间 -->
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
vim hdfs-site.xml
<!-- 设置SNN进程运行机器位置信息 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave01:9868</value>
</property>
vim mapred-site.xml
<!-- 设置MR程序默认运行模式: yarn集群模式 local本地模式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- MR程序历史服务地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<!-- MR程序历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
vim yarn-site.xml
<!-- 设置YARN集群主角色运行机器位置 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</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>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置yarn历史服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://master:19888/jobhistory/logs</value>
</property>
<!-- 历史日志保存的时间 7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
vim workers
master
slave01
slave02
cd /export/server/
scp -r hadoop-3.3.0/ root@10.0.0.11:/export/server/
scp -r hadoop-3.3.0/ root@10.0.0.12:/export/server/
vim /etc/profile
export HADOOP_HOME=/export/server/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
1.5. Hadoop集群启动
hdfs namenode -format
start-dfs.sh
start-yarn.sh
# master
#] jps
DataNode
ResourceManager
NameNode
Jps
NodeManager
# slave01
#] jps
SecondaryNameNode
NodeManager
DataNode
Jps
# slave02
#] jps
Jps
DataNode
NodeManager
# HDFS集群
http://namenode_host:9870
# YARN集群
http://resourcemanager_host:8088
1.6. HDFS操作
# 查看目录
hadoop fs -ls /
# 创建目录
hadoop fs -mkdir /angteacher
# 上传文件
touch xier.txt
hadoop fs -put xier.txt /angteacher
# 计算
cd /export/server/hadoop-3.3.0/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-3.3.0.jar pi 2 2
2. Spark部署使用
2.1 解压配置
tar xvf spark-3.3.0-bin-hadoop3.tgz -C /export/server/
cd /export/server/spark-3.3.0-bin-hadoop3/conf
cp workers.template workers
vim workers
master
slave01
slave02
- 配置spark-env.sh环境变量文件(master)
cd /export/server/spark-3.3.0-bin-hadoop3/conf
cp spark-env.sh.template spark-env.sh
vim spark-env.sh
## 设置JAVA安装目录
JAVA_HOME=/export/server/jdk1.8.0_241/
## HADOOP软件配置文件目录,读取HDFS上文件和运行YARN集群
HADOOP_CONF_DIR=/export/server/hadoop-3.3.0/etc/hadoop/
YARN_CONF_DIR=/export/server/hadoop-3.3.0/etc/hadoop/
## 指定spark老大Master的IP和提交任务的通信端口
# 告知Spark的master运行在哪个机器上
export SPARK_MASTER_HOST=master
# 告知sparkmaster的通讯端口
export SPARK_MASTER_PORT=7077
# 告知spark master的 webui端口
SPARK_MASTER_WEBUI_PORT=8080
# worker cpu可用核数
SPARK_WORKER_CORES=1
# worker可用内存
SPARK_WORKER_MEMORY=1g
# worker的工作通讯地址
SPARK_WORKER_PORT=7078
# worker的 webui地址
SPARK_WORKER_WEBUI_PORT=8081
## 设置历史服务器
# 配置的意思是 将spark程序运行的历史日志 存到hdfs的/sparklog文件夹中
SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://master:8020/sparklog/ -Dspark.history.fs.cleaner.enabled=true"
- 在HDFS上创建程序运行历史记录存放的文件夹(master)
hadoop fs -mkdir /sparklog
hadoop fs -chmod 777 /sparklog
- 配置spark-defaults.conf文件(master)
cd /export/server/spark-3.3.0-bin-hadoop3/conf
cp spark-defaults.conf.template spark-defaults.conf
vim spark-defaults.conf
# 开启spark的日期记录功能
spark.eventLog.enabled true
# 设置spark日志记录的路径
spark.eventLog.dir hdfs://master:8020/sparklog/
# 设置spark日志是否启动压缩
spark.eventLog.compress true
scp -r /export/server/spark-3.3.0-bin-hadoop3/ root@10.0.0.11:/export/server/
scp -r /export/server/spark-3.3.0-bin-hadoop3/ root@10.0.0.12:/export/server/
2.2 启动spark集群
sbin/start-history-server.sh
- 启动Spark的Master和Worker进程(master)
# 启动全部master和worker
cd /export/server/spark-3.3.0-bin-hadoop3
sbin/start-all.sh
# 或者可以一个个启动:
# 启动当前机器的master
sbin/start-master.sh
# 启动当前机器的worker
sbin/start-worker.sh
# 停止全部
sbin/stop-all.sh
# 停止当前机器的master
sbin/stop-master.sh
# 停止当前机器的worker
sbin/stop-worker.sh
2.3 连接到StandAlone集群
# 访问集群模式
http://master:8080
cd /export/server/spark-3.3.0-bin-hadoop3/bin
# 连接spark集群
./pyspark --master spark://master:7077
# 通过--master选项来连接到 StandAlone集群
# 如果不写--master选项, 默认是local模式运行
2.4 spark项目测试
sc.parallelize([1, 2, 3, 4, 5]).map(lambda x: x * 10).collect()
cd /export/server/spark-3.3.0-bin-hadoop3/bin
./spark-submit --master spark://master:7077 /export/server/spark-3.3.0-bin-hadoop3/examples/src/main/python/pi.py 100
http://master:18080/