备忘录:为查询和总结记录。
记录:NO.226
本例环境:
操作系统:CentOS-7-x86_64-DVD-1908
JDK版本:jdk-8u251-linux-x64
Hadoop版本:hadoop-2.9.2
远程连接工具:SecureCRT 8.0
官网地址:https://hadoop.apache.org/
官网文档地址:https://hadoop.apache.org/docs
官网下载地址:https://archive.apache.org/dist/hadoop/common/
Linux环境准备:https://blog.csdn.net/zhangbeizhen18/article/details/107437516
1.Hadoop运行模式
本地模式,Standalone Operation。
伪分布式模式,Pseudo-Distributed Operation。
完全分布式模式,Fully-Distributed Operation。
2.准备三台虚拟
本例配置规划如下:
3.三台虚拟基础环境
3.1创建目录
本例在/home/apps目录下创建module和software,安装包放在software备用,
module目录存安装软件。
命令如下:
sudo mkdir module
sudo mkdir software
sudo chown learn:learn /home/apps/module/ /home/apps/software/
注意:在部署操作使用一个普通用户learn进行操作。
其中learn用户具备root操作权限,即在
/etc/sudoers文件中新增
learn ALL=(ALL) ALL
在遇到需要root权限时,就在操作命令前添加sudo即可。
3.2本例jdk安装
tar -zxvf jdk-8u251-linux-x64.rpm
如上安装就在默认路径下,即/usr/java/jdk1.8.0_251-amd64中
指定目录安装:
tar -zxvf jdk-8u251-linux-x64.rpm -C /home/apps/module/
在 /etc/profile新增环境变量:
vim /etc/profile
##JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_251-amd64
export PATH=$PATH:$JAVA_HOME/bin
生效:
source /etc/profile
验证java命令生效:
java -version
3.3三台虚拟机防火墙均关闭
关闭防火墙
systemctl disable firewalld
设置开机禁用防火墙
systemctl stop firewalld
查看防火墙状态
systemctl status firewalld
4.三台虚拟机主机名与域名映射
主机名:
hostnamectl set-hostname hadoop151
hostnamectl set-hostname hadoop152
hostnamectl set-hostname hadoop153
域名映射在/etc/hosts新增如下
192.168.110.151 hadoop151
192.168.110.152 hadoop152
192.168.110.153 hadoop153
5.在Hadoop151机器安装hadoop并配置好集群
部署规划按照:
XX
5.1安装Hadoop
在/home/apps/software/操作
tar -zxvf hadoop-2.9.2.tar.gz -C /home/apps/module/
安装后hadoop落盘在/home/apps/module/hadoop-2.9.2
5.2.配置Hadoop环境变量
在 /etc/profile新增环境变量:
vim /etc/profile
sudo vim /etc/profile
###HADOOP_HOME 2020-7-19
export HADOOP_HOME=/home/apps/module/hadoop-2.9.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
生效:
source /etc/profile
验证hadoop命令生效:
hadoop
6.本例配置的文件
数量全量配置
配置HDFS
hadoop-env.sh
core-site.xml
hdfs-site.xml
配置YARN,历史日志服务器,日志聚合
yarn-env.sh
yarn-site.xml
mapred-env.sh
mapred-site.xml
6.配置集群-HDFS配置
在/home/apps/module/hadoop-2.9.2/etc/hadoop目录中的配置文件
6.1配置hadoop-env.sh
##JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_251-amd64
6.2配置core-site.xml
6.3配置hdfs-site.xml
7.配置集群-YARN配置
7.1配置yarn-env.sh
##JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_251-amd64
7.2配置yarn-site.xml
7.3配置mapred-env.sh
##JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_251-amd64
7.3配置mapred-site.xml
注意将mapred-site.xml.template复制一份为mapred-site.xml
8.将hadoop151主机安装的hadoop环境拷贝到hadoop152和hadoop153
在/home/apps中拷贝
scp -r module/ root@hadoop152:/home/apps/module
scp -r module/ root@hadoop153:/home/apps/module
在hadoop152和hadoop153中的/home/apps目录修改所有权
sudo chown learn:learn module/ -R
注意:-r和-R标示递归
9.将hadoop151主机安装的profile环境拷贝到hadoop152和hadoop153
scp /etc/profile root@hadoop152:/etc/profile
scp /etc/profile root@hadoop153:/etc/profile
分别在hadoop152和hadoop153
source /etc/profile
10.启动与关闭
在/home/apps/module/hadoop-2.9.2目录下操作
10.1逐个启动节点顺序如下
格式化namenode:
在格式化前先清空删除历史格式化的东西
rm -rf data/ logs/
格式化namenode:
bin/hdfs namenode -format
启动HDFS
在hadoop151:
sbin/hadoop-daemon.sh start namenode
sbin/hadoop-daemon.sh start datanode
在hadoop152:
sbin/hadoop-daemon.sh start datanode
sbin/hadoop-daemon.sh start secondarynamenode
在hadoop153:
sbin/hadoop-daemon.sh start datanode
启动YARN
在hadoop153:
sbin/yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start nodemanager
在hadoop152:
sbin/yarn-daemon.sh start nodemanager
在hadoop151:
sbin/yarn-daemon.sh start nodemanager
10.2逐个关闭节点顺序如下
关闭YARN
在hadoop151:
sbin/yarn-daemon.sh stop nodemanager
在hadoop152:
sbin/yarn-daemon.sh stop nodemanager
在hadoop153:
sbin/yarn-daemon.sh stop nodemanager
sbin/yarn-daemon.sh stop resourcemanager
关闭HDFS
在hadoop153:
sbin/hadoop-daemon.sh stop datanode
在hadoop152:
sbin/hadoop-daemon.sh stop datanode
在hadoop151:
sbin/hadoop-daemon.sh stop datanode
在hadoop152:
sbin/hadoop-daemon.sh stop secondarynamenode
在hadoop151:
sbin/hadoop-daemon.sh stop namenode
10.3浏览器查看
查看HDFS
http://hadoop151:50070/
或者
192.168.110.151:50070
查看MapReduce
http://hadoop153:8088
10.4通过jps查看进程:
hadoop151中进程:
NodeManager
DataNode
NameNode
hadoop152中进程:
NodeManager
DataNode
SecondaryNameNode
hadoop153中进程:
DataNode
NodeManager
ResourceManager
11.配置免密登入
以上,可以体验一下,3个台机器启动9个进程,逐个启动能做,但是费时。
因此,配置ssh免密登陆是非常必要。
本例NameNode在hadoop151中即,启动HDFS命令在这台机器执行,
即hadoop151需要免密登入hadoop152和hadoop153.
本例ResourceManager在hadoop153中即,启动YARN命令在这台机器执行,
即hadoop153需要免密登入hadoop151和hadoop152.
11.1在hadoop151配置免密登入hadoop152和hadoop153
使用learn用户配置
在/home/learn进行配置
使用ll -al查看是否有.ssh目录
<1>.hadoop151生成秘钥和公钥
ssh-keygen -t rsa
生成过程中敲3次回车即可。
<2>.在/home/learn/.ssh生成文件
id_rsa 存储私钥文件
id_rsa.pub 存储公钥文件
<3>.配置hadoop151免密登入hadoop152
ssh-copy-id hadoop152
在hadoop152的/home/learn/.ssh目录下生成authorized_keys
authorized_keys即授权文件
<4>.配置hadoop151免密登入hadoop153
ssh-copy-id hadoop153
在hadoop153的/home/learn/.ssh目录下生成authorized_keys
<5>.配置hadoop151免密登入hadoop151
ssh-copy-id hadoop151
在hadoop153的/home/learn/.ssh目录下生成authorized_keys
authorized_keys即授权文件
11.2在hadoop153配置免密登入hadoop151和hadoop152
使用learn用户配置
在/home/learn进行配置
使用ll -al查看是否有.ssh目录
<1>.hadoop153生成秘钥和公钥
ssh-keygen -t rsa
<2>.在hadoop153的/home/learn/.ssh生成文件
id_rsa 存储私钥文件
id_rsa.pub 存储公钥文件
<3>.配置hadoop153免密登入hadoop151
ssh-copy-id hadoop151
在hadoop152的/home/learn/.ssh目录下生成authorized_keys
authorized_keys即授权文件
<4>.配置hadoop153免密登入hadoop152
ssh-copy-id hadoop152
在hadoop153的/home/learn/.ssh目录下生成authorized_keys
authorized_keys即授权文件
<5>.配置hadoop153免密登入hadoop153
ssh-copy-id hadoop153
在hadoop153的/home/learn/.ssh目录下生成authorized_keys
authorized_keys即授权文件
查看hadoop152的authorized_keys
能看到learn@hadoop151和learn@hadoop153即可表明这两台计算机可以免密登入learn@hadoop152
11.3配置root用户从hadoop151免密登入hadoop152和hadoop153
ssh-keygen -t rsa
ssh-copy-id hadoop151
ssh-copy-id hadoop152
ssh-copy-id hadoop153
11.4在/home/learn/.ssh的4个文件
authorized_keys:存放授权过的无密登录服务器公钥
id_rsa:生成的私钥
id_rsa.pub:生成的公钥
known_hosts:记录ssh访问过计算机的公钥
公钥私钥是成对的:
Generating public/private rsa key pair
12.配置hadoop集群启动
在/home/apps/module/hadoop-2.9.2/etc/hadoop中
修改slaves文件
此文件存放节点域名
hadoop151
hadoop152
hadoop153
主要此文件不能有任何空格字符
将配置文件同步从hadoop151同步到hadoop152和hadoop153
scp -r slaves learn@hadoop152:/home/apps/module/hadoop-2.9.2/etc/hadoop
scp -r slaves learn@hadoop153:/home/apps/module/hadoop-2.9.2/etc/hadoop
注意slaves存放信息,在集群启动时会读取
13.启动集群
在/home/apps/module/hadoop-2.9.2中启动
13.1在hadoop151启动HDFS
因为NameNode部署在这台服务器
启动:
sbin/start-dfs.sh
关闭:
sbin/stop-dfs.sh
启动日志:
13.2在hadoop153启动YARN
因为ResourceManager部署在这台服务器
启动:
sbin/start-yarn.sh
关闭:
sbin/stop-yarn.sh
启动日志:
13.3使用jps查看进程
hadoop151中进程:
NodeManager
DataNode
NameNode
hadoop152中进程:
NodeManager
DataNode
SecondaryNameNode
hadoop153中进程:
DataNode
NodeManager
ResourceManager
13.4使用浏览器查看
http://hadoop151:50070
http://hadoop153:8088
13.5启动日志服务器
在hadoop151中启动,配置就在这台服务器
启动:
sbin/mr-jobhistory-daemon.sh start historyserver
关闭:
sbin/mr-jobhistory-daemon.sh stop historyserver
浏览器查看:
http://hadoop151:19888
在启动日志服务器后hadoop151进程:
NameNode
DataNode
JobHistoryServer
NodeManager
14.测试
14.1上传文件
在hadoop151机器的/home/apps/module/hadoop-2.9.2
在hdfs文件系统创建文件夹并上传文件
bin/hdfs dfs -mkdir -p /user/learn/input
创建多级目录需带 -p
bin/hdfs dfs -put input/info.txt /user/learn/input
在浏览器查看/user/learn/input
15.运行典型的WordCount案例
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount /user/learn/input /user/learn/output
在浏览器查看/user/learn/output
以上,感谢。