前言:
1、本文为小白学习实践记录,欲参考本文建议先从头至尾看一遍了解大致内容后再进行可事更功倍或再决定是否采取。
2、本文通过4台Linux虚拟机,搭建4个节点的完全分布式Hadoop集群,Linux系统版本是CentOS 7,Hadoop版本是3.2.0,Java版本是12。
3、为增加印象巩固学习记忆此次采用的是傻瓜式每个节点逐一配置的方式,而不采用只创建一台虚拟机安装系统并配好每个节点具有相同基础功能的Java、Hadoop等单机环境后再由其克隆多开,再分别对每个节点进行下一步关联配置的方式。
一、准备(每台机器):
1、下载 :VMware workstation 15 Pro (附:VMware密钥许可),CentOS7系统iso:CentOS7 Minimal(最小精简版) ,
Hadoop3.2.0 :
可点击当前界面上显示的Binary安装包进入下载,亦可点击【mirror site】进入镜像页面,选择要安装的版本进行下载。
2、 虚拟机创建和CentOS7安装步骤 :(VMware虚拟机的创建和CentOS7的安装),基本上就是下一步下一步这种简单的默认安装就好了。除了在安装过程中配置分区的时候可能需要手动分区,然后选择标准分区即可。装好后,修改内存,因为不需要图形界面,所以不需要太大的内存也没问题或选择由系统自动分配也是可以的。
3、配置静态IP : 基于VMware虚拟机CentOS7 的 IP 自更新改为固定不变详细(点我查看)
4、Java安装和环境变量的配置以及卸载: 基于VMware虚拟机CentOS7的Java12安装与卸载详细 (点我查看)
二、Hadoop的安装与环境变量的配置(每台机器):
1、上传 Hadoop二进制.tar文件压缩包至虚拟机Linux(略);
2、解压缩:
(1)在统根目录 /opt 下创建用于存放解压安装文件的 hadoop 文件夹 (命令 “ mkdir /opt/hadoop ” )
(2)从根下opt/APP下把Hadoop文件包解压缩到根下opt/hadoop里去 :(命令 “ tar xzvf /usr/APP/hadoop-3.2.0.tar.gz -C /opt/hadoop/ ”)
解压后会发现hadoop目录层级过多,则可以适当调整
3、配置环境变量:
使用 “ vi /etc/profile ” 编辑profile文件,
加入如下内容:(省略vi命令细节)
#Hadoop
export HADOOP_HOME=/opt/hadoop-3.2.0 # 该目录为解压安装目录
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
保存后执行 “ source /etc/profile ” 命令,使profile生效,而后输入 “ hadoop ” “ hadoop version ” 等命令进行验证:
4、配置Hadoop环境脚本文件中的JAVA_HOME参数:
进入Hadoop安装目录下的etc/hadoop目录(命令 “ cd /opt/hadoop-3.2.0/etc/hadoop ”)
分别在hadoop-env.sh、mapred-env.sh、yarn-env.sh文件中添加 export JAVA_HOME="/opt/jdk" ( 路径为jdk安装路径具体以自己的实际路径为准):
hadoop-env.sh (命令 “ vi hadoop-env.sh ”)(下图为采用把文件拖到Windows上来编辑,然后再传回替换的方式与 vi 命令效果一致)
mapred-env.sh (命令 “ vi mapred-env.sh ”)(下图为采用把文件拖到Windows上来编辑,然后再传回替换的方式与 vi 命令效果一致)
yarn-env.sh (命令 “ vi yarn-env.sh ”)(下图为采用把文件拖到Windows上来编辑,然后再传回替换的方式与 vi 命令效果一致)
验证Hadoop配置是否生效
[root@hadoop01]# hadoop version
(注意此处和刚配置好hadoop环境变量的此处之前 “ hadoop version ”)
三、修改主机名、配置DNS、关闭防火墙(每台机器):
1、修改主机名:
使用 “ hostname hadoop ” 命令只能临时改变我们的主机名,当我们重启之后主机名还会恢复成原来的
输入 “ hostname hadoop ” 即可将主机名改成hadoop01,使用 “ uname -n ” 命令查看。
想要永久修改自己的主机名,得通过修改 /etc/sysconfig/network 文件,加上 hostname(命令 “ /etc/sysconfig/network ”),
其 hadoop01 就是要设置的主机名,然后保存退出,重启系统你就会读取配置文件,设置主机名为新的主机名了。
2、配置DNS:
编辑配置文件加入如下内容(ip地址和主机名自己实际为准),设置1个主节点和3个从节点的映射关系(命令 “ vi /etc/hosts ” )。
( ip 主机名 )
192.168.44.3 hadoop01
192.168.44.4 hadoop02
192.168.44.5 hadoop03
192.168.44.6 hadoop04
3、关闭防火墙:
查看防火状态 (命令 “ systemctl status firewalld ”)
暂时关闭服务 (命令 “ systemctl stop firewalld ”)
永久关闭服务 (命令 “ systemctl disable firewalld ”)
四、配置免密登录、修改Hadoop配置文件(每台机器):
1、免密登录:
每台主机authorized_keys文件里面包含的主机(ssh密钥),该主机都能无密码登录;所以只要每台主机的authorized_keys文件里面都放入其他主机(需要无密码登录的主机)的ssh密钥就行了。
(1)每个节点生成ssh密钥 (命令 “ ssh-keygen -t rsa ”):
执行命令后会在~目录下生成 .ssh 文件夹,里面包含 id_rsa和id_rsa.pub 两个文件,标识保存在 /root/.ssh/id_rsa 中,公钥保存在 /root/.ssh/id_rsa.pub 中。
(2) 在主节点上将公钥拷到一个特定文件 authorized_keys 中:
命令记录:
[root@hadoop01 ~]# cd .ssh
[root@hadoop01 .ssh]# ls
id_rsa id_rsa.pub
[root@hadoop01 .ssh]# cp id_rsa.pub authorized_keys
[root@hadoop01 .ssh]# ls
authorized_keys id_rsa id_rsa.pub
(3)将 authorized_keys 文件拷到下一个节点(hadoop02),并将该节点的ssh密钥 id_rsa.pub 加入该文件中(在hadoop01上使用 scp 命令实现远程文件拷贝):
如果ssh:无法解析主机名hadoop02:名称或服务未知失去连接则可以采用 目标 ip替换 并输入root密码即可(但这是由于 /etc/hosts文件没有添加所有主机信息成功的表现最好不要现行采用ip而是返回去把每个节点都成功加入每个节点的信息(参考上文 “2、配置DNS:”)):
命令记录:
[root@hadoop01 .ssh]# scp authorized_keys root@hadoop02:/root/.ssh/
ssh: Could not resolve hostname hadoop02: Name or service not known
lost connection
[root@hadoop01 .ssh]# scp authorized_keys 192.168.92.133:/root/.ssh/
authorized_keys 100% 395 217.6KB/s 00:00
登录hadoop02主机(刚拷入的目标主机)将该节点的ssh密钥id_rsa.pub加入到 authorized_keys 该文件中 然后拷贝发送给hadoop03:
命令记录
[root@hadoop02 ~]# cd .ssh
[root@hadoop02 .ssh]# ls
authorized_keys id_rsa id_rsa.pub
[root@hadoop02 .ssh]# cat id_rsa.pub>>authorized_keys #使用cat追加方式
[root@hadoop02 .ssh]#scp authorized_keys 192.168.92.134:/root/.ssh/
登录hadoop02主机(刚拷入的目标主机)将该节点的ssh密钥id_rsa.pub加入到 authorized_keys 该文件中 然后拷贝发送给hadoop03:
(4) 重复第3步的操作,依次将hadoop03、hadoop04节点的ssh密钥加入到authorized_keys文件中,并将hadoop04节点生成的authorized_keys文件拷贝到其他三个节点(hadoop01、hadoop02、hadoop03):
登录hadoop03主机,将ssh密钥加入authorized_keys文件中:
[root@hadoop03 .ssh]# cat id_rsa.pub >> authorized_keys
[root@hadoop03 .ssh]# scp authorized_keys root@hadoop04:/root/.ssh/ (/etc/hosts 文件以及修改成功 故不再用 ip 而是用目标主机名 root@hadoop04)
登录hadoop04主机,将ssh密钥加入authorized_keys文件中
[root@hadoop04 .ssh]# cat id_rsa.pub >> authorized_keys
将最后生成的authorized_keys文件分别拷贝到hadoop01、hadoop02和hadoop03
[root@hadoop04 .ssh]# scp authorized_keys root@hadoop01:/root/.ssh/
[root@hadoop04 .ssh]# scp authorized_keys root@hadoop02:/root/.ssh/
[root@hadoop04 .ssh]# scp authorized_keys root@hadoop03:/root/.ssh/
(5)验证免密登录
使用ssh 用户名@节点名或ssh ip地址命令验证免密码登录。
如上图 如果使用 ssh 命令免密登录目标主机提示 无法建立主机“Hadoop02(192.168.92.133)”的真实性。ecdsa密钥指纹是sha256:yscxu2isxghgc8u6covqvwubgznriakvp4ckfkxlcrc。ecdsa密钥指纹是md5:52:0b:2c:11:e9:0f:59:6a:cc:3f:a4:42:64:cc:a5:43。是否确实要继续连接(是/否)?: 让你输入 yes 时 ,可关闭zhu'j检查功能 执行 ssh -o StrictHostKeyChecking=no 本机IP地址就可以了(如下图)。
如果 执行 ssh -o StrictHostKeyChecking=no 本机IP地址 命令 后出现有的机器可以解决有的又还是需要输入yes (如下图),
则是将“本机ip”(ecdsa)永久添加到已知主机列表中予以zhu'j检查功能时添加不到位(如下图),
为了安全起见可在每个节点执行一遍
ssh -o StrictHostKeyChecking=no 本机IP地址命令。
如果在每个节点进行一对多测试时依然遇到此问题则继续 yes 然后ssh -o StrictHostKeyChecking=no 本机IP地址命令(哦还有注意是输入 yes 之前的本机IP哦),
由于我也是小白领悟有限,此方法虽然有些苦逼但也确实能解决问题。
现在就看似快乐的测试吧....
[root@hadoop01 .ssh]# ssh root@hadoop02
Last login: Tue Feb 12 03:59:46 2019 from 192.168.44.1
[root@hadoop02 .ssh]# ssh root@hadoop01
Last login: Tue Feb 12 21:27:24 2019 from hadoop04
[root@hadoop03 .ssh]# ssh root@hadoop04
Last login: Tue Feb 12 04:00:47 2019 from 192.168.44.1
[root@hadoop04 .ssh]# ssh root@hadoop01
Last login: Tue Feb 12 21:26:44 2019 from hadoop02
2、修改Hadoop配置文件:
Hadoop安装目录下的etc/hadoop目录中,需修改core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、workers文件,根据实际情况修改配置信息。
(1)core-site.xml (配置Common组件属性)
(2)hdfs-site.xml (配置HDFS组件属性)
代码记录:
(3)mapred-site.xml (配置Map-Reduce组件属性)
代码记录:
(4)yarn-site.xml(配置资源调度属性)
(5)workers文件
增加从节点地址(若配置了hosts,可直接使用主机名,亦可用IP地址)
代码记录:
hadoop02
hadoop03
hadoop04
(6)将配置好的文件夹拷贝到其他从节点:
(可在Windows上编辑后通过Xshell直接拖动上传至每个节点,也可在主节点用v编辑好后用 SCP 命令统一拷贝到其他从节点):
SCP命令记录:
[root@hadoop01 hadoop]# scp -r /opt/hadoop-3.2.0 root@hadoop02:/opt/
[root@hadoop01 hadoop]# scp -r /opt/hadoop-3.2.0 root@hadoop03:/opt/
[root@hadoop01 hadoop]# scp -r /opt/hadoop-3.2.0 root@hadoop04:/opt/
(7)创建必要的文件夹:
1、/opt/hadoop-3.2.0/tmp
2、/opt/hadoop-3.2.0/dfs/name
3、/opt/hadoop-3.2.0/dfs/data
五、添加HDFS和Yarn权限,配置启动脚本:
1、添加HDFS权限:编辑如下脚本,在第二行空白位置添加HDFS权限:
命令记录:
[root@hadoop01 sbin]# vi sbin/start-dfs.sh
[root@hadoop01 sbin]# vi sbin/stop-dfs.sh
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
2、添加Yarn权限:编辑如下脚本,在第二行空白位置添加Yarn权限:
[root@hadoop01 sbin]# vi sbin/start-yarn.sh
[root@hadoop01 sbin]# vi sbin/stop-yarn.sh
YARN_RESOURCEMANAGER_USER=root
HDFS_DATANODE_SECURE_USER=yarn
YARN_NODEMANAGER_USER=root
注意:若不添加上述权限,则会报错:缺少用户权限定义所致:
ERROR: Attempting to launch hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting launch.
Starting datanodes
ERROR: Attempting to launch hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting launch.
Starting secondary namenodes [localhost.localdomain]
ERROR: Attempting to launch hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting launch.
六、初始化 、启动:
1、式化:(命令 “ hdfs namenode -format ”)
2、启动(两种方式均可启动):
方法一:(命令 “ start-all.sh ”)
方法一:(命令 “ start-dfs.sh ” , “ start-yarn.sh ”)
[root@hadoop01 hadoop-3.2.0]# sbin/start-dfs.sh
[root@hadoop01 hadoop-3.2.0]# sbin/start-yarn.sh
2、验证Hadoop启动成功:
主节点
[root@hadoop01 sbin]# jps
11329 NameNode
11831 ResourceManager
11592 SecondaryNameNode
12186 Jps
从节点
[root@hadoop02 hadoop]# jps
5152 SecondaryNameNode
5085 DataNode
5245 NodeManager
5357 Jps
[root@hadoop03 opt]# jps
5080 DataNode
5178 NodeManager
5278 Jps
[root@hadoop04 opt]# jps
5090 NodeManager
5190 Jps
4991 DataNode
七、Web端口访问
注:先开放端口或直接关闭防火墙。
# 查看防火墙状态
firewall-cmd --state
# 临时关闭防火墙
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
在浏览器输入:http://hadoop01:8088打开ResourceManager页面。
在浏览器输入:http://hadoop01:50070打开Hadoop Namenode页面。
注意:如果输入主节点名称无法打开Web页面,则需要配置Windows上的hosts,路径如下:
C:\Windows\System32\drivers\etc\hosts
192.168.44.3 hadooop01
192.168.44.4 hadooop02
192.168.44.5 hadooop03
192.168.44.6 hadooop04
/*---------------------
作者:杨
版权声明:
本文为博主原创文章,转载请附上源文链接!
本文链接:https://my.oschina.net/yangmufa/blog/3101846
如果觉得本文对你有所收获,你的请评论点赞
与合理优质的转发也将是鼓励支持我继续创作的动力,
也欢迎访问个人网站:www.yangmufa.com(或百度 杨木发个人博客)。
(不断学习 坚持创作 善于总结 共同进步)
---------------------*/