一、在搭建伪分布式的前提下
https://blog.csdn.net/qq_16555103/article/details/87926120 -------- 伪分布式搭建
二、步骤如下
- linux版本:Centos 6.5
1、克隆3台虚拟机,分别为:
-》ai7-server2
-》ai7-server3
-》ai7-server4
2、配置上面克隆出来的虚拟机的网络环境,步骤如下:
-》网卡
- 网卡位置:cd /etc/sysconfig/network-scripts
- 因为克隆出来的虚拟机的网卡名称被自动改成了ifcfg-eth1,但是我们克隆出来的虚拟机的网卡文件名称还是
ifcfg-eth0,所以现在network服务是启动不起来的。解决方案是把ifcfg-eth0的名称改成ifcfg-eth1,命令是
mv ifcfg-eth0 ifcfg-eth1
- 使用命令:sudo vi ifcfg-eth1,修改网卡文件信息,内容如下:
-- 使用dd命令,删除UUID这一行
-- 使用dd命令,删除HWADDR这一行
-- 使用shift + a,修改为DEVICE=eth1
-- 使用shift + a,修改为NAME="System eth1"
-- 使用shift + a,修改IPADDR=192.168.109.13(注意修改成自己的IP)
-- 最后使用shift + zz保存并退出
- 重新启动网卡服务,使用命令:sudo service network restart
-》主机名
- 主机名文件位置:cd /etc/sysconfig/network
- 使用命令:sudo vi /etc/sysconfig/network修改主机名配置文件,修改内容如下:
-- HOSTNAME=ai7-server2
-- 使用shift + zz保存并退出
-- 重启虚拟机 sudo reboot,否则主机名配置不会生效
-》IP映射
- hosts位置:/etc/hosts
- 使用命令:sudo vi /etc/hosts 修改文件,内容如下:
-- 192.168.109.12 ai7-server1
192.168.109.13 ai7-server2
192.168.109.14 ai7-server3
192.168.109.15 ai7-server4
-》使用命令:sudo reboot 重启虚拟机,使以上的配置信息生效(千万不要忘记这一步)
3、配置ssh免密设置,详情查看hadoop伪分布式搭建
4、配置Hadoop的完全分布式模式
-》规划节点上的服务进程
- ai7-server2 namenode datanode secondarynamenode resourcemanager nodemanager
- ai7-server3 datanode nodemanager
- ai7-server4 datanode nodemanager
-》配置步骤:
- 配置hadoop-2.7.3/etc/hadoop/core-site.xml文件,修改内容如下:
<configuration>
<!-- ------定义namenode在那一台节点上 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ai7-server2:8020</value>
</property>
<!-- -------定义工作目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/hadoop-2.7.3/data/tmp</value>
</property>
</configuration>
注意事项:修改成自己的主机名,注意也许和我的主机名不一样
- 配置hadoop-2.7.3/etc/hadoop/hdfs-site.xml文件,修改内容如下:
<configuration>
<!--修改副本数-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--关闭权限检测-->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
</configuration>
- 配置hadoop-2.7.3/etc/hadoop/mapred-site.xml文件,修改内容如下:
<configuration>
<!--指定mapreduce程序运行在yarn平台上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!--指定历史服务在哪个节点上-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>ai7-server2:10020</value>
</property>
<!--历史服务web端界面地址-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>ai7-server2:19888</value>
</property>
</configuration>
- 配置hadoop-2.7.3/etc/hadoop/yarn-site.xml文件,修改内容如下:
<configuration>
<!--指定启动运行mapreduce上的nodemanager的运行服务-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--指定resourcemanager主节点机器,可选项,不一定要配置,默认是本机,但是指定了之后在其他机器上启动,就会报错-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>ai7-server2</value>
</property>
<!--开启日志聚合功能-->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!--日志保存时间,单位是秒,建议3-7天-->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>106800</value>
</property>
</configuration>
- 配置hadoop-2.7.3/etc/hadoop/salves文件,修改内容如下:
ai7-server2
ai7-server3
ai7-server4
-》将ai7-server2上的配置文件发送到ai-server3和ai7-server4上
- 要发送的配置文件如下:
-- core-site.xml
-- hdfs-site.xml
-- mapred-site.xml
-- yarn-site.xml
-- slaves
- 跨节点拷贝发送配置文件,步骤如下:
1. cd /opt/modules/hadoop-2.7.3/etc/hadoop/ cd到hadoop配置文件目录下
2. scp core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml slaves ai7-server3:/opt/modules/hadoop-2.7.3/etc/hadoop/
3. scp core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml slaves ai7-server4:/opt/modules/hadoop-2.7.3/etc/hadoop/
-》把ai7-server2,ai-server3和ai7-server4这三台节点上Hadoop的工作目录和日志目录删除掉
- 命令:rm -rf /opt/modules/hadoop-2.7.3/data/tmp 删除工作目录
- 命令:rm -rf /opt/modules/hadoop-2.7.3/logs 删除工作目录
-》重新格式化namenode节点
- bin/hdfs namenode -format
- 注意,是在ai7-server2节点上进行格式化
-》启动集群命令:sbin/start-all.sh
-》如果启动集群报如下错误:
ai7-server2: starting namenode, logging to /opt/modules/hadoop-2.7.3/logs/hadoop-coder-namenode-ai7-server2.out
ai7-server4: starting datanode, logging to /opt/modules/hadoop-2.7.3/logs/hadoop-coder-datanode-ai7-server4.out
: Name or service not knownstname ai7-server2
: Name or service not knownstname ai7-server3
那么说明slaves文件出现了脏数据,我们只需要把它删除掉,然后在虚拟机里使用vi命令创建并重新编译即可