Hadoop基础平台安装三台虚拟机的完全分布式配置与检验结果
内容:配置三台虚拟机,并且三台虚拟机的安排
三台虚拟机配置方案:
1.初期工作
关闭防火墙
配置hostname
vim/etc/sysconfig/network
IP地址修改 配置好Hostname 配置好hosts
vim/etc/sysconfig/hosts
快速安装软件并且通过脚本快速安装到其余两台虚拟机
通过ssh协议。使用SCP 或者sync服务,编写Shell脚本可以快速实现安装和配置环境变量
通过Sync 将安装内容分发到其他两台虚拟机将余下的环境变量 Linux + 3个env环境变量还有4个hadoop中的site配置好,并且通过快速分发脚本分发到余下两台虚拟机
2.具体配置
修改hostname
然后将hostname通过Xsync发送过去
#环境变量设置
#JAVA_HOME
export JAVA_HOME=/opt/moudle/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
#HADOOP_HOME
export HADOOP_HOME=/opt/moudle/hadoop-2.7.2
exportPATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
xsync脚本设置
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0));then
echono args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename$p1`
echofname=$fname
#3 获取上级目录到绝对路径
pdir=`cd-P $(dirname $p1); pwd`
echopdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5 循环
for((host=103;host<105; host++)); do
echo ------------------- hadoop$host--------------
rsync -rvl $pdir/$fname$user@hadoop$host:$pdir
done
将这个脚本复制到Linux目录中的/bin目录下就可以了
通过XFTP 将文件发送到主机中(Hadoop100) 就是Shell中的xftp
安装 Java 和Hadoop
tar -zxvf /opt/software/hadoop-2.7.2.tar.gz -C/opt/moudle/
tar -zxvf /opt/software/jdk-8u144-linux-x64.tar.gz-C /opt/moudle/
然后进入到module目录下通过Xsync脚本快速分发到其他虚拟机当中。
开启另一个Xshell窗口并且配置环境变量/etc/profile
然后进入到/etc/目录下通过xsync 将配置文件发送到其他虚拟机中
全局喊话:source /etc/profile
然后查看Java Hadoop版本检查Java Hadoop版本是否创建成功
备注 Xsync脚本可以优化通过使用SSH 免密码登陆??待测试
基本的软件安装过程就结束了我们可以开始配置SSH 免密登陆
检查软件SSH 是否安装
rpm -qa | grep openssh
如果出现如上图所示结果说明该软件安装完成
开始配置SSH 免密登陆
ssh-keygen -t rsa
ssh-copy-id hadoop129 //输入密码之后我们要去129虚拟机当中去查看是否存在一个authorkey,如上图所示
测试之后可以无密码登陆另一台虚拟机当中
然后在2号虚拟机下同样的步骤配置来事项两个虚拟机之间的相互通信
这就实现了相互通信
修改以下三个文件
env.sh文件主要是是配置Java环境变量用的 可以在后台开一个写字本 记录一下相关路径
配置四个site文件
注意对应问题在hdfs上配置2NN别把位置对应错了
然后在不同的虚拟机当中启动不同的服务:
1。在Hadoop128机器下启动Namenode
因为是第一次启动namede 所以需要格式化
hdfs namenode -format
hadoop-daemon.sh start namenode
启动datanode (根据安装表格这样就可以启动datanode)
Hadoop128Hadoop129Hadoop130
HDFSNAMENODE
DATANODE
DATANODE
RECOUSRCEMASTER
DATANODE
SECONDARYNAMENO
YARNNODEMASTERNODEMASTERNODEMASTER
通过jps命令检查相关节点是否启动
然后开始登陆 Hadoop28:50070 进入端口
查看node节点数
群体脚本SSH配置:
这样就可以快速配置相关内容
启动Yarn
start-yarn.sh
(在启动之前要确保SSH 无密码登陆是解决状态。)当ssh免密登陆问题解决之后,可以通过配置文件来配置相关内同
整个完整集群配置完成
Hadoop128:JPS方案:
Hadoop129:jps结果
130结果
出现了一个新的问题
在129查看虚拟机的时候只有一个noedmanager启动了
继续往下测试
下一步:将一个文件上传到HDFS文件服务器中
具体命令:
在hadoop目录下上传文件的目录其实是:/user/root/你上传的文件名称
所以具体的操作方式是:hadoop jarshare/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount/user/root/Wcinput output
然后我们进入到Hadoop128:50070 /user/root/output目录下
相关的运算结果
至此整体的一个集群就配置完了
配置历史记录
<!-- 指定MR运行在Yarn上-->
mapreduce.framework.name
yarn
<!-- 历史服务器端地址-->
mapreduce.jobhistory.address
hadoop129:10020
<!-- 历史服务器web端地址-->
mapreduce.jobhistory.webapp.address
hadoop129:19888
历史记录的端口是在Recourcemanager上的,这样可以更好的配置出结果
启动历史记录端口
mr-jobhistory-daemon.sh start historyserver
在配置端口机器上配置就可以出现如下结果
5874 ResourceManager
8275 DataNode
8371 SecondaryNameNode
8549 NodeManager
8796 JobHistoryServer
8829 Jps
SSH 配置
2)生成公钥和私钥:
[atguigu@hadoop102.ssh]$ ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
(3)将公钥拷贝到要免密登录的目标机器上
[atguigu@hadoop102.ssh]$ ssh-copy-id hadoop102
[atguigu@hadoop102.ssh]$ ssh-copy-id hadoop103
[atguigu@hadoop102.ssh]$ ssh-copy-id hadoop104
bin/hdfsnamenode -format
sbin/start-dfs.sh
注意事项:
二次格式化namenode需要:
接将 /opt/module/hadoop-2.7.2 下面的 data 和logs 文件夹删除,再对namenode进行格式化即可,随后启动namenode和DataNode 系统会直接帮你创建新的文件夹,此时的clusterID一定是一致的,也能解决此问题
在Core-site文件中设定Namenode节点的位置。
在HDFS -SITE 中 配置的是Sceondary节点的配置。
在Yarn中配置Resourcemanager中的配置
进行mapreduce运算的时候产生not
exit问题不存在 : 解决办法
Input path does not exist:hdfs://hadoop131:9000/user/root/wcipnt
hdfs://hadoop131:9000/wcipnt
hadoop jarshare/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /wcipnt /123
细节问题:路径的前后在后边启动是第一个个路径
名字一定要对应好,不要弄错
DEPRECATED: Use of this script to executehdfs command is deprecated.
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR
在现在的hadoop版本中 HDFS 语句示例:hdfs dfs -ls /
就不会出先DEPRECATE的这个问题了
遗留下来的问题
1.在192虚拟机下只启动了一个节点打算从新做一遍集群处理看看能不能避免这个问题
如果出现Uable to load native-hadoop问题给
2.WARN util.NativeCodeLoader: Unable toload native-hadoop library for your platform... using builtin-java classeswhere applicable
涉及到Hadoop的库的操作?网上的解决的办法不一样在log日志文件中添加一段话
两个问题可能都是在安装集群过程中留下的一些微小细节问题。但是第二个问题和第一个问题并没有影像他的效果。
配置时间历史记录和日志:
配置文件Yarn-site.xml
<!-- 指定MR运行在Yarn上-->
mapreduce.framework.name
yarn
<!-- 历史服务器端地址-->
mapreduce.jobhistory.address
hadoop131:10020
<!-- 历史服务器web端地址-->
mapreduce.jobhistory.webapp.address
hadoop131:19888
历史节点就启动成功了。
时间同步:
为了以后方便Hbase的安装和使用进行的相关操作,这样就可以实现三个节点之间时间的同步。