提示:这篇文章搭建的分布式首先要有两台或以上的虚拟机,hadoop基本环境没有搭建好的线搭建好java和hadoop,可以看我前面的文章。
slave这个文件在最新版中是workers
先 cd /software/hadoop/sbin 进入配置文件的目录下
1、配置core-site.xml
vi core-site.xml
按 i 进入编辑状态,将下面内容复制进入,按esc退出编辑状态,然后 :wq 保存修改,修改必须是在root权限下
<configuration>
<!-- 默认节点(写自己主机的ip)端口,端口默认为9000 即namenode地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!-- hdfs的临时文件的目录***这个要记好,后面初始化错误可能会用到*** -->
<property>
<name>hadoop.tmp.dir</name>
<value>/data/tmp/hadoop</value>
</property>
</configuration>
2、配置yarn-site.xml
同上操作
<configuration>
<!-- reducer获取数据方式,即nomenodeManager获取数据的方式为shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
3、配置hdfs-site.xml
<configuration>
<!-- 设置数据块应该被复制的份数(和集群机器数量相等) 即指定hdfs保存数据的副样本数量-->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 指定hdfs中namenode的存储位置 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/tmp/hadoop/name</value>
</property>
<!-- 指定hdfs中datanode的存储位置-->
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/tmp/hadoop/data</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>slave1:50070</value>
</property>
</configuration>
4、配置mapred-site.xml
<configuration>
<!-- mapreduce的工作模式:yarn,即告诉hadoop以后MR(MAP/Reduce)运行在YARN上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
5、配置slaves(新版本为workers)
在里面添加上主机名,这里添加了master、slave1、slave2
localhost
master
slave1
slave2
6、配置hadoop-env.sh
将JAVA_HOME设置为你java配置的地方
7、配置yarn-env.sh
新版的hadoop中 yarn-env.sh中没有 JAVAHOME的配置,不需要处理
如果存在JAVA_HOME的设置的话就要配置为java的路径
8、最后一步 格式化一下
hdfs namenode -format
9、然后调用,启动dfs和yarn
/software/hadoop/sbin/start-all.sh
注意:
如果是新版的hadoop,可能会有一下报错,启动不来
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
这时候就需要在start-dfs.sh、start-yarn.sh中添加以下的
如果是3.x新版本的话就是改HADOOP_SECURE_DN_USER为HDFS_DATANODE_SECURE_USER,否则警告,但能运行
#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
YARN_RESOURCEMANAGER_USER=root
YARN_NODEMANAGER_USER=root
在stop-dfs.sh、stop-yarn.sh中添加如下:
#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
调用以下命令可以停止服务
/software/hadoop/sbin/start-all.sh
10、注意,如果这里出现slave1和slave2等虚拟主机授权异常(启动不了)或者是需要手动输入root权限密码的话(可以启动),可以设置一下ssh免密登录
正常启动如下
调用jps命令可以看到如下几个进程存活,就说明集群搭建成功
去salve1等虚拟主机查看,也能看到对应的进程说明集群搭建成功