三,配置伪分布模式hadoop
伪分布模式与单机模式相比最大的特点是创建了HDFS,数据的处理和计算结果都在HDFS中进行。因为HDFS只在一台计算机实现,所以称伪分布模式。伪分布模式已经具备了hadoop的典型元素,常用于程序调试,在伪分布模式下通过的程序可以直接提交到hadoop集群中运行。在hadoop单机模式的基础上,修改配置文件就可以实现伪分布模式。
1.配置前检查
(1)关闭防火墙,SELinux
sudo apt install ufw #下载ufw工具
sudo ufw status verbose #查看防火墙状态
sudo ufw enable #开启防火墙
sudo ufw disable #关闭防火墙
sudo apt-get install selinux-utils #下载selinux-utils工具方便对selinux的控制等
sudo apt install policycoreutils #下载policycoreutils工具方便查看selinux的状态
sestatus #查看selinux的状态,一般情况下是disabled状态,如果是enforcing则需要将其关闭
sudo vim /etc/selinux/config #进入/etc/selinux/config修改selinux的状态,关闭它
(2)检查jdk,hadoop的配置情况
一切正常
2.开始配置
(1)进入伪分布xml文件配置目录,大家按图索骥即可
(2)在core-site.xml 文件中配置hadoop的tmp目录和FS的URL地址,tmp目录用于保存HDFS的关键文件
sudo vim core-site.xml #进入core-site.xml进行配置
在core-site.xml文件中输入以下内容
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/opt/apps/hadoop-3.3.4/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop:9000</value>
</property>
</configuration>
(3)配置hdfs-site.xml文件,文件所在目录与core-site.xml文件相同,内容包括文件块在HDFS中保存的副本数以及NameNode和DataNode的文件保存目录。
sudo vim hdfs-site.xml #进入该目录进行编辑并添加以下内容
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/apps/hadoop-3.3.4/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/apps/hadoop-3.3.4/tmp/dfs/data</value>
</property>
</configuration>
(4)配置logs,tmp目录,按图索骥
(5)ssh免密登录
cd ~/.ssh #进入该目录
ssh-keygen -t rsa -b 2048 #一路回车,开始设置免密登录
cat id_rsa.pub >> ~/.ssh/authorized_keys #将私钥上传到公钥里面ssh 主机名 #测试免密登录
(6)赋权root,格式化名称节点,启动hadoop,检查,开启web页面
sudo vim /etc/profile #在此文件中键入以下内容
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
source /etc/profile #刷新文件
格式化名称节点
hdfs namenode -format #格式化名称节点
start-dfs.sh #启动dfs集群
start-dfs.sh #关闭dfs集群
start-all.sh #启动全部节点
stop-all.sh #关闭全部节点
通过名称节点和数据节点的端口打开它们的web页面
http://主机名:9870或者http:ip:9870#在浏览器中输入该内容回车即可打开名称节点的web页面,9870是该节点的端口号
http://主机名:8088或者http:ip:8088#在浏览器中输入该内容回车即可打开名称节点的web页面,8088是该节点的端口号
至此,伪分布模式hadoop搭建完成。
3.测试HDFS
HDFS是一个运行在廉价硬件上的分布式文件系统,因其高容错性、高吞吐性得到广泛的应用。HDFS在集群多台机器中以块(Block)的方式读写数据,以流式方式读写数据。HDFS为应用程序提供java-apidiaoyong,还能使用HTTP浏览器浏览文件系统。
start-all.sh #打开伪分布模式下的所有端口
jps #查看端口是否能正常打开
hdfs dfs -mkdir -p /opt/apps #在hdfs中建立/opt/apps目录
cd /opt/apps #进入本地目录
vim Count-The-Hours.txt #把喜欢的英文歌歌词复制在Count-The-Hours.txt文件中
hdfs dfs -put /opt/apps/Count-The-Hours.txt /opt/apps #将Count-The-Hours.txt文件放到hdfs中我们建好的文件夹下
hdfs dfs -ls /opt/apps/ #查看文件有没有放到hdfs中的新建的文件夹下
也可以在web页面,名称节点端口中打开Browse Directory页面输入目录信息查看修改等
然后测试一下数据处理
hdfs dfs -mkdir -p input #在hdfs中新建一个input目录
hdfs dfs -put /opt/apps/Count-The-Hours.txt input #将喜欢的英文歌歌词放入里面
hdfs dfs -ls input #查看是否已放入
cd /opt/apps/hadoop-3.3.4/share/hadoop/mapreduce #进入该目录
hadoop jar hadoop-mapreduce-examples-3.3.4.jar wordcount input output #调用hadoop-mapreduce-examples-3.3.4.jar包中的wordcount功能将input中的文件进行数据处理(单词统计)输出在output下
hdfs dfs -ls output #查看output目录下的数据处理文件
hdfs dfs -cat output/part-r-00000 #查看数据处理情况(因为我复制的歌词是中英混合的所以有中文出现)
当然我们也可以用网页查看
四,配置全分布模式hadoop
集群模式与伪分布模式的主要区别就是hadoop部署在多台计算机还是一台计算机上。集群模式增加了资源管理服务和历史服务等辅助性服务。
1.在伪分布的基础上修改添加mapred-site.xml和yarn-site.xml
(1)修改core-site.xml文件
vim core-site.xml #在该文件夹下加入
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/opt/apps/hadoop-3.3.4/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop:9000</value>
</property>
</configuration>
(2) 修改hdfs-site.xml
vim hdfs-site.xml #在该文件夹中添加以下内容
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/apps/hadoop-3.3.4/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/apps/hadoop-3.3.4/tmp/dfs/data</value>
</property>
<property>
<name>dfs.secondarynode.namesecondary.dir</name>
<value>file:/opt/apps/hadoop-3.3.4/tmp/dfs/namesecondary</value>
</property>
(3)修改mapred-site.xml文件
vim mapred-site.xml #在该文件夹中添加以下内容
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop:19888</value>
</property>
(4)修改 yarn-site.xml文件
vim yarn-site.xml #在该文件夹中添加以下内容
<property>
<name>yarn.resourcemnager.hostname</name>
<value>hadoop</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
2.修改tmp文件和logs
cd /opt/apps/hadoop-3.3.4 #进入该文件下
rm -rf tmp #删除tmp文件
rm -rf logs #删除logs文件
mkdir #使用该命令重建
3.克隆出从机,更改主机名,配置映射,ssh免密登录
(1)克隆
(2)修改主机名,查看IP,修改映射
hostnamectl set-hostname 主机名 #修改主机名
ip a 或者 ip -a 或 ifconfig #查看IP
vim /etc/hosts #配置IP映射
(3)ssh免密登录
cd ~/.ssh #进入ssh配置目录
ssh-keygen -t rsa -b 2048 #生成私钥
cat id_rsa.pub >> ~/.ssh/authorized_keys #将私钥上传到公钥里面
ssh-copy-id -i id_rsa.pub root@其他主机名 #将公钥传给其他主机
4.启动并测试
(1)在主机hadoop上完成格式化
hdfs namenode -format
(2)启动hadoop集群服务
start-all.sh #打开所有进程
jps #查看进程(主机hadoop上应有五个进程,从机hadoop2上有四个进程,如下图)
打开web页面(名称节点端口号:9870,数据节点端口号:8088)
在主机上打开历史节点
mr-jobhistory-daemon.sh start historyserver #启动历史节点
mr-jobhistory-daemon.sh stop historyserver #关闭历史节点
web页面(端口号:19888)
(3)测试
与伪分布一致,就不演示啦,大家可以用自己喜欢的歌词或者其他文本测试。