Hadoop集群配置以及伪分布式、完全分布式

安装好配置好虚拟机后将IP地址进行截图,并在secureCRT中输入相应IP地址进行连接(此处CRT我用的是绿色免安装版本所以可以直接连接)

以下是虚拟机IP以及主机名截图(bigdata1后改成了bigdata129)
在这里插入图片描述
1.关闭防火墙(虚拟机直接禁用,不然格式化以后运行不成功)
systemctl disable firewalld 禁止防火墙

2.SecureCRT 【File(文件)】→【Connect SFTP Session(连接SFTP会话)】并将jdk以及hadoop安装包传送从主机到当前路径(虚拟机Linux系统)
put jdk-8u121-linux-x64.tar.gz
put hadoop-2.7.3.tar.gz
显示100%后可以用ls命令查看文件是否存在
tar -zxvf jdk-8u121-linux-x64.tar.gz -C /opt/module 解压安装
tar -zxvf hadoop-2.7.3.tar.gz -C /opt/module 解压安装

3.配置hadoop并使用source /etc/profile配置生效
vi /etc/profile文件添加:
export HADOOP_HOME=/root/hadoop-2.7.3(/root是你自己的文件目录,我的是root)
export PATH= H A D O O P H O M E / b i n : HADOOP_HOME/bin: HADOOP_HOME/sbin:$PATH
Esc :wq!保存并退出
运行命令hadoop,检验是否成功

vi /root/hadoop-2.7.3/etc/hadoop/hadoop-env.sh文件修改
显示行号 Esc :set number 取消行号Esc :set nonumber
修改第25行export JAVA_HOME=/root/jdk1.8.0_121
Esc :wq!保存并退出

开始实行伪分布式配置
((bigdata129是虚拟机设置的主机名))
在与之间添加如下property:(打开文件先找到修改位置并按一下i键再输入,不然容易出错)
①core-site.xml

fs.defaultFS hdfs://bigdata129:9000 hadoop.tmp.dir /root/hadoop-2.7.3/tmp ②hdfs-site.xml dfs.replication 1 dfs.namenode.secondary.http-address bigdata129:50090 ③mapred-site.xml(该配置文件不存在,先复制) cp mapred-site.xml.template mapred-site.xml mapreduce.framework.name yarn ④yarn-site.xml yarn.resourcemanager.hostname bigdata129 yarn.nodemanager.aux-services mapreduce_shuffle ⑤Slaves文件里使用默认localhost,或者添加 bigdata129(既是NameNode又是DataNode) 注:如果Slaves文件为空,就没有DataNode和NodeManager。 ⑥修改\etc\hosts配置文件 运行命令 vi \etc hosts 注释掉已有内容,添加虚拟机的ip及对应主机名: 192.168.78.129 bigdata129(虚拟机设置的IP地址以及主机名,理论上128也可以,但完全分布式我用128出错所以换成129,截图还是128) ⑦修改\etc\hostname配置文件 运行命令 vi \etc hostname 添加虚拟机的主机名: bigdata129 重启虚拟机,主机名生效 格式化hdfs namenode -format (如果不是第一次格式化,格式化之前先删除/opt/module/hadoop-2.7.3/下面的tmp、logs两个目录) 启动start-all.sh (如果启动之前已经启动过,启动之前先停止stop-all.sh) cd /root/hadoop-2.7.3/tmp/dfs 执行jps,NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager如果全部启动,伪分布式配置成功,如下图

在这里插入图片描述
(此处我并未修改主机名,还是128,之前用IP用128在伪分布式可以成功,但完全分布式报错,找了一整天才找到问题,一定要注意!!!)
在这里插入图片描述

web控制台访问:http://192.168.78.129:50070http://192.168.78.129:8088
页面正常显示,伪分布成功

wordcount
cd /root/hadoop-2.7.3/share/hadoop/mapreduce 转入wordcount所在路径。
运行touch in.txt,创建In.txt文件,作为输入文件。(文件内容自己输入)
(如果in.txt是空文件,运行vi in.txt,输入内容作为被统计词频的输入文件)
输出目录/output必须不存在,程序运行后自动创建。
运行wordcount:
hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /adir/in.txt output/
运行成功之后,进入/output目录,打开文件part-r-00000查看计数结果
在这里插入图片描述

总结:伪分布式配置不是很困难,只要IP地址链接得上,没有问题,文件配置不出错就能出来,但是伪分布式出来不代表完全分布式也能出来,还是要注意IP问题

SSH免密码登陆(解决每次启动hadoop输入用户密码问题)
生成公、私**对:ssh-****** -t rsa 按3次回车键
查看:cd ~/.ssh路径下面的rd_rsa和rd_rsa.pub
复制:ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
查看生成authorized_keys

开始完全分布式配置
完全分布式容易出错,尤其是IP地址出问题连接不上都不报错但就是出不来,所以一定要注意
1.克隆虚拟机,加上主机一共三台
前述伪分布式的虚拟机(bigdata128)作为master主节点,克隆另外两个虚拟机(bigdata129、bigdata131)作为slaves子节点

修改以下配置文件
①slaves配置文件
三台虚拟机分别都运行命令 vi /root/hadoop-2.7.3/etc/hadoop slaves
修改slaves为:
bigdata130
bigdata131
②修改\etc\hosts配置文件
三台虚拟机分别都运行命令 vi \etc hosts(etc找不到可以cd后cd …再ls就可以看到了)
注释已有内容,添加集群三台虚拟机的ip及对应主机名:
192.168.163.129 bigdata129
192.168.163.130 bigdata130
192.168.163.131 bigdata131
③修改\etc\hostname配置文件
三台虚拟机分别都运行命令 vi \etc hostname
添加各自的主机名bigdata129或者bigdata130或者bigdata131。
重启全部虚拟机,主机名生效

在主节点bigdata129上面输入格式化命令(hdfs namenode -format),格式化集群。
注:如果不是第一次格式化,三台虚拟机都删除\root\hadoop-2.7.3\下面的tmp、logs目录:rm –rf \root\hadoop-2.7.3\tmp rm –rf \root\hadoop-2.7.3\logs
注:如果格式化之前启动过集群,先在主节点bigdata129上面停止集群(stop-all.sh),再格式化
在主节点bigdata129上面输入启动命令(start-all.sh),启动集群。
注:如果启动之前启动过集群,先在主节点bigdata129上面停止集群(stop-all.sh),再启动
输入jps如下显示成功
在这里插入图片描述
web控制台访问:http://192.168.78.129:50070http://192.168.78.129:8088
页面正常显示,则成功

Wordcount
hdfs dfs -put in.txt /adir 上传本地当前路径下的in.txt文件 到hdfs的/adir目录下。
运行hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /adir/in.txt output/。
在http://192.168.78.129:50070 查看/user/root/output/part-r-00000文件里的词频统计结果(此处没截图)

总结:在做伪分布式的时候因为没有先按i键输入所以后来出错,重新做了一遍才出来。完全分布式耗了我一整天,因为连接不上没有报错,找了很久才发现是IP地址的问题,好在最后圆满解决