Hadoop 安装的全部步骤
在这里就省略了虚拟机的安装步骤,需要的可以后台踢踢我!
系统配置
- Linux系统:Ubuntu-22.04
- Hadoop:Hadoop-3.3.6
下载地址:Hadoop3.3.6下载地址 - Java:Java1.8.0_351下载地址
步骤1 安装vim编辑器和SSH服务
sudo apt-get install vim # 如果你习惯用vim编辑器,可以下载
sudo apt install openssh-server
sudo ufw disable #关闭防火墙
sudo apt-get install open-vm-tools
sudo apt-get install opem-vm –tools-desktop
sudo usermod –aG sudo hduser
sudo apt-get update
sudo apt-get upgrade
步骤2 验证当前IP地址,配置静态IP地址,更新主机名
记住IPv4 Address地址以及DNS
配置IPv4地址
配置IPv6
在master机器上面配置映射:
sudo nano /etc/hosts
#进入以后 将我们预期计划的映射关系添加进去
192.168.239.130 master
192.168.239.131 slave1
192.168.239.132 slave2
更新主机名
sudo nano /etc/hostname #更改为主机名master
重启虚拟机
sudo reboot
检查主IP地址
ip a #检查ip地址
ping yahoo.com #互联网测试(按Ctrl+C打断)
步骤2:在“/opt/”目录下创建“/module”和“/software”。更改 这些目录的属性,并上传Java和Hadoop软件包。
cd / #change to root directory
cd /opt
pwd #检查目录
sudo mkdir module software #创建module software文件夹
sudo chown hduser:hduser module/ software/ #将所有者从根目录更改为hduser
步骤3 安装Java
用xftp连接master虚拟机将下载好的Hadoop安装包以及Java安装包上传到software文件夹中。
解压Java安装包
cd /
cd /opt/software/
tar -zxvf jdk-8u351-linux-x64.tar.gz -C /opt/module/
配置Java环境变量
cd /opt/module/jdk1.8.0_351
pwd #获取Java的路径
cd /home/hduser
sudo nano ~/.bashrc
在文件的末尾添加以下一行
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_351 #此处是Java的安装路径
export PATH=$PATH:$JAVA_HOME/bin
应用新的环境变量
source ~/.bashrc
JAVA测试
java -version
步骤4 安装Hadoop
解压Hadoop安装包
cd /opt/software/
tar -zxvf hadoop-3.3.6.tar.gz -C /opt/module/
配置Hadoop环境变量
cd /opt/module/hadoop-3.3.6
pwd #获取Hadoop的路径
cd /home/hduser
sudo nano ~/.bashrc
在文件的末尾添加以下一行
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.3.6 #此地方为Hadoop的路径
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
应用新的环境变量
source ~/.bashrc
Hadoop测试
hadoop version
更新 hadoop-env.sh 文件
nano /opt/module/hadoop-3.3.6/etc/hadoop/hadoop-env.sh
随便找个地方添加这个
export JAVA_HOME=/opt/module/jdk1.8.0_351
步骤5:伪分布Hadoop集群的测试
cd /opt/module/hadoop-3.3.6
mkdir wcinput #创建wcinput文件夹
cd wcinput
touch word.txt #创建word.txt文本文件
sudo nano word.txt #编辑文件
添加以下文本
hadoop yarn
hadoop mapreduce
spark
spark
mapreduce
回到 Hadoop 目录/opt/module/hadoop-3.3.6
cd /opt/module/hadoop-3.3.6
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount wcinput/ wcoutput
查看结果
cat wcoutput/part-r-00000
看到如下结果:
hadoop 2
mapreduce 2
spark 2
yarn 1
步骤6 设置分布式三节点Hadoop集群
配置主节点
cd /opt/module/hadoop-3.3.6/etc/hadoop
1)配置 core-site.xml
nano core-site.xml
<configuration>
<!-- 指定 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<!-- 指定 hadoop 数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.3.6/data</value>
</property>
<!-- 配置 HDFS 网页登录使用的静态用户为 master -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>master</value>
</property>
</configuration>
2)配置 hdfs-site.xml
nano hdfs-site.xml
<configuration>
<!-- web 端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>master:9870</value>
</property>
<!-- web 端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave2:9868</value>
</property>
</configuration>
3)配置 yarn-site.xml
nano 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>slave1</value>
</property>
<!-- 开启日志聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<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>
<!-- 环境变量的继承 -->
<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_HOME</value>
</property>
</configuration>
4)配置 mapred-site.xml
nano mapred-site.xml
<configuration>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.3.6</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.3.6</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.3.6</value>
</property>
<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<!-- 历史服务器 web 端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
5)配置worker
nano /opt/module/hadoop-3.3.6/etc/hadoop/workers
添加以下节点的名称
master
slave1
slave2
6)开始克隆另外2台机器 并修改名称 分别为slave1 和 slave2(克隆时候将master先关机再进行克隆操作)
更改 slave1 以及slave2 的主机名
sudo nano /etc/hostname
更改 slave1 以及 slave2 的ip地址
配置IPv4地址
配置IPv6
修改完成后重启
reboot
7)配置3台机器的免密登录
==========每台机器都要操作一边========
ssh localhost #登录ssh 服务,才能生成/.ssh
cd ~/.ssh/ #将目录转到密钥的生成目录.ssh下面
ssh-keygen -t rsa #生成密钥 (此处敲三下回车键即可)
在每台机子上做完以上步骤后,在做下面步骤
==========将公钥拷贝到要免密登录的目标机器上(每台机器都要操作一边)========
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
步骤7 启动集群
初始化在master机器上面:
hdfs namenode -format
在master上启动 HDFS
cd /opt/module/hadoop-3.3.6/sbin
start-dfs.sh
在slave1上启动 YARN
cd /opt/module/hadoop-3.3.6/sbin
start-yarn.sh
使用jps查看集群
master虚拟机上
slave1虚拟机上
slave2虚拟机上
步骤8 集群条件下测试wordcount
我们在测试Hadoop伪分布式时候创建过一个wcinput目录,目录里面包含了一个word.txt,我们可以直接传到hdfs中进行完全分布式的测试.
cd /opt/module/hadoop-3.3.6
hadoop fs -put wcinput/ /
#(将/opt/module/ hadoop-3.3.6路径下的wcinput目录上传到hdfs中的根目录)
上传以后执行程序:
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /wcinput/ /wcoutput
查看结果
hadoop fs -cat /wcoutput/part-r-00000
看到如下结果:
hadoop 2
mapreduce 2
spark 2
yarn 1
出现这样的结果,说明我们的集群搭建成功,并且可以正常运行!
Web 端查看 HDFS 的 NameNode
(a)浏览器中输入:http://master:9870
(b)查看 HDFS 上存储的数据信息
(5)Web 端查看 YARN 的 ResourceManager
(a)浏览器中输入:http://slave1:8088
(b)查看 YARN 上运行的 Job 信息
步骤9 关闭集群并关闭所有虚拟机
stop-all.sh # 在master上以及slave1上都要输入
sudo shutdown now #关机
大家有啥不懂的可以后台踢踢我,给大家解答!