天天看点

hadoop分布式环境配置

提示:这篇文章搭建的分布式首先要有两台或以上的虚拟机,hadoop基本环境没有搭建好的线搭建好java和hadoop,可以看我前面的文章。

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配置的地方

hadoop分布式环境配置

7、配置yarn-env.sh

新版的hadoop中 yarn-env.sh中没有 JAVAHOME的配置,不需要处理

如果存在JAVA_HOME的设置的话就要配置为java的路径

hadoop分布式环境配置

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免密登录

正常启动如下

hadoop分布式环境配置

调用jps命令可以看到如下几个进程存活,就说明集群搭建成功

hadoop分布式环境配置

去salve1等虚拟主机查看,也能看到对应的进程说明集群搭建成功

hadoop分布式环境配置