centos7 搭建Hadoop3.0.3完全分布式

第一步:服务器规划

IP地址主机名称nameNodedataNode
192.168.60.201master
192.168.60.200node1

 

第二步:基于依赖环境准备

1、centos7 搭建JDK8

                 参考文章地址:https://blog.csdn.net/zhouzhiwengang/article/details/87882197

2、centos7 查看防火墙状态,如果启动防火墙,则关闭防火墙

systemctl status firewalld.service   # 查询防火墙状态(active :激活状态,disable:关闭状态)

systemctl stop firewalld.service      # 关闭防火墙

systemctl disable firewalld.service      # 禁用防火墙

3、输入mkdir /usr/local/hadoop   创建一个hadoop文件夹

4、将hadoop-3.0.3.tar.gz放到刚创建好的hadoop文件夹中

5、进入hadoop目录,输入tar -xvf hadoop-3.0.3.tar.gz 解压tar包

[root@master sbin]# cd /usr/local/hadoop/
[root@master hadoop]# ls
hadoop-3.0.3  hadoop-3.0.3.tar.gz 

6、输入 vi /etc/profile,配置环境变量。加入如如下内容

export HADOOP_HOME=/usr/local/hadoop/hadoop-3.0.3

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

7、 输入 souce /etc/profile ,使环境变量改动生效

8、任意目录输入hado,然后按Tab,如果自动补全为hadoop,则说明环境变量配的没问题,否则检查环境变量哪出错了

[root@master ~]# hadoop

9、创建三个之后要用到的文件夹,分别如下: 

mkdir /usr/local/hadoop/tmp

mkdir -p /usr/local/hadoop/hdfs/name

mkdir /usr/local/hadoop/hdfs/data

创建结果如下:

10、进入hadoop-3.0.3解压后的 /etc/hadoop 目录,里面存放的是hadoop的配置文件,接下来要修改里面一些配置文件

11、有两个 .sh 文件,需要指定一下java的目录,首先输入 vi hadoop-env.sh 修改配置文件

[root@master hadoop]# vi hadoop-env.sh

将原有的JAVA_HOME注释掉,根据自己的JDK安装位置,精确配置JAVA_HOME如下,保存并退出

export JAVA_HOME=/usr/local/java/jdk1.8.0_181-amd64/

12、输入 vi yarn-env.sh 修改配置文件

[root@master hadoop]# vi yarn-env.sh

加入如下内容,指定JAVA_HOME,保存并退出

export JAVA_HOME=/usr/local/java/jdk1.8.0_181-amd64/

13、 输入 vi core-site.xml 修改配置文件

[root@master hadoop]# vi core-site.xml 

在configuration标签中,添加如下内容,保存并退出,注意这里配置的hdfs:master:9000是不能在浏览器访问的

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
         <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:9000</value>
                <description>HDFS的URI</description>
        </property>

        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/usr/local/hadoop/tmp</value>
                <description>节点上本地的hadoop临时文件夹</description>
        </property>
</configuration>

14、输入 vi hdfs-site.xml 修改配置文件

[root@master hadoop]# vi hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
          <property>
                <name>dfs.namenode.http-address</name>
                <value>master:50070</value>
        </property>
        <!--
        <property>
                <name>dfs.datanode.http.address</name>
                <value>master:50075</value>
                <description>
                The datanode http server address and port.
                If the port is 0 then the server will start on a free port.
                </description>
        </property>
        -->
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/local/hadoop/hdfs/name</value>
                <description>namenode上存储hdfs名字空间元数据 </description>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/local/hadoop/hdfs/data</value>
                <description>datanode上数据块的物理存储位置</description>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
                <description>副本个数,默认是3,应小于datanode机器数量</description>
        </property>
</configuration>

15、输入 vi mapred-site.xml 修改配置文件

[root@master hadoop]# vi mapred-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
         <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
                <description>指定mapreduce使用yarn框架</description>
        </property>
</configuration>
~                    

16、输入vi yarn-site.xml 修改配置文件

[root@master hadoop]# vi yarn-site.xml

在configuration标签中,添加如下内容,保存并退出

<property>
                <name>yarn.resourcemanager.hostname</name>
                <value>master</value>
                <description>指定resourcemanager所在的hostname</description>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
                <description>
                NodeManager上运行的附属服务。
                需配置成mapreduce_shuffle,才可运行MapReduce程序
                </description>
        </property>

17、输入 vi workers 修改配置文件(老版本是slaves文件,3.0.3 用 workers 文件代替 slaves 文件)

[root@master hadoop]# pwd
/usr/local/hadoop/hadoop-3.0.3/etc/hadoop
[root@master hadoop]# vi workers 

将localhost删掉,加入如下内容,即dataNode节点的主机名

node1

18、 将虚拟机关闭,再复制一份虚拟机,重命名为node1,注意这里一定要关闭虚拟机,再复制

19、将2台虚拟机都打开,后一台复制的虚拟机打开时,都选择“我已复制该虚拟机”

20、修改centos7主机名称

        参考文章:https://blog.csdn.net/zhouzhiwengang/article/details/93597019

21、在二台机器分别输入 vi /etc/hosts 修改文件,其作用是将一些常用的网址域名与其对应的IP地址建立一个关联,当用户在访问网址时,系统会首先自动从Hosts文件中寻找对应的IP地址

二个文件中都加入如下内容,保存并退出,注意这里要根据自己实际IP和节点主机名进行更改,IP和主机名中间要有一个空格

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.60.201 master
192.168.60.200 node1

22、配置二台机器间的免密登录ssh 

        参考文章地址:https://blog.csdn.net/zhouzhiwengang/article/details/93602224

23、如果node节点还没有hadoop,则master机器上分别输入如下命令将hadoop复制

scp /usr/local/hadoop/* root@node1:/usr/local/hadoop

24、在master机器上,任意目录输入 hdfs namenode -format 格式化namenode,第一次使用需格式化一次,之后就不用再格式化,如果改一些配置文件了,可能还需要再次格式化

hdfs namenode -format

25、在master机器上,进入hadoop的sbin目录,输入 ./start-all.sh 启动hadoop(若只配了hdfs,则可以 输入 ./start-dfs.sh 启动hdfs)

[root@master sbin]# ./start-dfs.sh 

26、输入jps查看当前java的进程,

该命令是JDK1.5开始有的,作用是列出当前java进程的PID和Java主类名,nameNode节点除了JPS,还有3个进程,启动成功

27、在node1机器输入 jps 查看进程如下,说明配置成功

28、在浏览器访问nameNode节点的8088端口和50070端口可以查看hadoop的运行状况、

29、 在master机器上,进入hadoop的sbin目录,输入 ./stop-all.sh 关闭hadoop 或 输入 ./stop-dfs.sh 关闭dfs

 

遇到的问题:Attempting to operate on hdfs namenode as root

写在最前注意:
1、master,slave都需要修改start-dfs.sh,stop-dfs.sh,start-yarn.sh,stop-yarn.sh四个文件
2、如果你的Hadoop是另外启用其它用户来启动,记得将root改为对应用户

HDFS格式化后启动dfs出现以下错误:

[root@master sbin]# ./start-dfs.sh
Starting namenodes on [master]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [slave1]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.

在/usr/local/hadoop/hadoop-3.0.3/sbin路径下:
将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数:

HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

还有,start-yarn.sh,stop-yarn.sh顶部也需添加以下:

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
修改后重启 ./start-dfs.sh,成功

 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值