从零开始搭建hadoop分布式集群环境:(五)hadoop完全分布式集群环境配置

        hadoop集群安装需要一些准备工作,例如安装Java、ssh、下载hadoop等等,这些在之前的文章里面以及现详细说过了。下面就只剩最后一步,也就是配置hadoop。在这一步的过程中我参考过很多文档,但是大部分文章都写得不是很详细,导致配置完成后出现各种问题,要么是hdfs格式化失败,要么是运行后缺少进程。偶然情况下在about云论坛上看到了pig2写的一系列教程,才真正理解了hadoop集群的配置。这些教程真正做到了授人以渔,因此在这里我就转载她的文章给大家参考学习。


以下部分为转载部分:

源自about云论坛

http://www.aboutyun.com/

博主 pig2

博客地址   http://www.aboutyun.com/home.php?mod=space&uid=61&do=index

还是一个漂亮的妹子~哈哈!


hadoop(1.X、2.X)2.7各个版本操作系统各个版本完全分布是集群配置说明


        正常情况下,安装之后,我们看到的进程
        master会看到下面进程


        slave会看到下面进程


上面进程是否是固定的,无论你是ubuntu还是centos,还是其它系统,都是这些进程。

##############################################################

配置文件

hadoop配置有两种类型重要配置文件:
一种只读默认配置文件
core-default.xml, hdfs-default.xml, yarn-default.xml and mapred-default.xml.

一种Site-specific 配置文件

etc/hadoop/core-site.xml, etc/hadoop/hdfs-site.xml, etc/hadoop/yarn-site.xml and etc/hadoop/mapred-site.xml.


额外,你可以控制hadoop脚本,在bin/目录下,通过 etc/hadoop/hadoop-env.sh 和 etc/hadoop/yarn-env.sh.设置特性的值

HDFS 守护进程是 NameNode, SecondaryNameNode, and DataNode. YARN 守护进程是 ResourceManager, NodeManager, 和 WebAppProxy.如果使用MapReduce,  可以启用Job History Server.如果集群比较大,通常是在单独的主机上运行。


#########################################################

我们知道了各种配置文件,守护进程,那么剩下的就是对他们具体的配置。
这个配置我们是可以定制的,所以只要是hadoop2.x文档对于其他版本的文档,如果不是当前版本的新特性。所有的完全分布是文档都是可以通用的。

也就是说当前最新版本hadoop2.7,如果安装过以前hadoop2.2或则其他版本,那么集群的安装都是通用的。


hadoop(2.x)以hadoop2.2为例完全分布式最新高可靠安装文档

首先说一下这个安装过程需要注意的地方

一、使用新建用户可能会遇到的问题
(1)权限问题:对于新手经常使用root,刚开始可以使用,但是如果想真正的学习,必须学会使用其他用户。也就是你需要学会新建用户,但是新建用户,并不是所有人都会的。具体可以参考 ubuntu创建新用户并增加管理员权限,这里面使用 adduser 是最方便的。也就是说你需要通过这里,学会给Linux添加用户,并且赋权,上面那篇文章会对你有所帮助。

(2)使用新建用户,你遇到另外一个问题,就是文件所属权限,因为新建的文件,有的属于root用户,有的属于新建用户,例如下面情况,我们看到mv.sh是属于root用户,大部分属于aboutyun用户。所以当我们两个不同文件不能访问的时候,这个可能是原因之一。也是在这里,当你新建用户的时候,可能会遇到的新问题。

(3)上面我们只是提出了问题,但是根本没有解决方案,这里在提出解决方案,我们如何改变文件所属用户。
比如上图中,mv.sh属于root用户,那么我们怎么让他所属about云用户。可以是下面命令:
sudo chown -R  aboutyun:aboutyun mv.sh

解释一下上面命令的含义:
------------------------------------------------------------------------------------------------------------------------------------------------------
1.sudo:如果不是root用户,不带上这个命令会经常遇到麻烦,所以需要养成习惯。至于sudo详细解释可以看下面。
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的。

2.chown-》change own的意思。即改变所属文件。对于他不了解的同学,可以查看: 让你真正了解chmod和chown命令的用法
3.aboutyun:aboutyun代表aboutyun用户及aboutyun用户组
4.即是被授权的文件

(下载包为hadoop2.2)
下载完毕,我们就需要解压

tar zxvf hadoop-2.2.0_x64.tar.gz 


这里是解压到当前路径。


这里就开始动手了,下面也介绍一下整体的情况:


1、这里我们搭建一个由三台机器组成的集群:
172.16.77.15     aboutyun/123456      master
172.16.77.16     aboutyun/123456      slave1
172.16.77.17     aboutyun /123456      slave1
1.1 上面各列分别为IP、user/passwd、hostname

一、需要注意的问题
hadoop2.2的配置还是比较简单的,但是可能会遇到各种各样的问题。最常讲的就是看不到进程。
看不到进程大致有两个原因:
1.你的配置文件有问题。
对于配置文件,主机名,空格之类的这些都不要带上。仔细检查
2.Linux的权限不正确。
最常出问题的是core-site.xml,与hdfs-site.xml。

core-site.xml
      <property>
              <name>hadoop.tmp.dir</name>
              <value>file:/home/aboutyun/tmp</value>
               <description>Abase forother temporary directories.</description>
      </property>

说一下上面参数的含义,这里是hadoop的临时文件目录,file的含义是使用本地目录。也就是使用的是Linux的目录,一定确保下面目录

/home/aboutyun/tmp

的权限所属为你创建的用户。并且这里面我也要会变通,aboutyun,为我创建的用户名,如果你创建了zhangsan或则lisi,那么这个目录就会变为


/home/zhangsan/tmp

这里不熟悉,是因为对Linux的不熟悉的原因。这里在来张图:
注意:1和2对比。如果你所创建的tmp属于root,那么你会看不到进程。



hdfs-site.xml
同样也是:要注意下面,你是需要改成自己的用户名的

  <property>
             <name>dfs.namenode.name.dir</name>
             <value>file:/home/ aboutyun/dfs/name</value>
       </property>
      <property>
              <name>dfs.datanode.data.dir</name>
              <value>file:/home/ aboutyun/dfs/data</value>
       </property>

上面讲完,我们开始配置


hadoop集群中每个机器上面的配置基本相同,所以我们先在master上面进行配置部署,然后再复制到其他节点。所以这里的安装过程相当于在每台机器上面都要执行。

【注意】:master和slaves安装的hadoop路径要完全一样,用户和组也要完全一致

1、 解压文件
将第一部分中下载的

tar zxvf hadoop-2.2.0_x64.tar.gz

mv hadoop-2.2.0  hadoop
解压到/usr路径下
并且重命名,效果如下



2、 hadoop配置过程

配置之前,需要在master本地文件系统创建以下文件夹:
~/dfs/name
~/dfs/data
~/tmp
这里文件权限:创建完毕,你会看到红线部分,注意所属用户及用户组。如果不再新建的用户组下面,可以使用下面命令来修改: 让你真正了解chmod和chown命令的用法



这里要涉及到的配置文件有7个:
~/hadoop-2.2.0/etc/hadoop/hadoop-env.sh
~/hadoop-2.2.0/etc/hadoop/yarn-env.sh
~/hadoop-2.2.0/etc/hadoop/slaves
~/hadoop-2.2.0/etc/hadoop/core-site.xml
~/hadoop-2.2.0/etc/hadoop/hdfs-site.xml
~/hadoop-2.2.0/etc/hadoop/mapred-site.xml
~/hadoop-2.2.0/etc/hadoop/yarn-site.xml
以上文件默认不存在的,可以复制相应的template文件获得。下面举例:



配置文件1:hadoop-env.sh
修改JAVA_HOME值(export JAVA_HOME=/usr/jdk1.7)
配置文件2:yarn-env.sh

修改JAVA_HOME值(export JAVA_HOME=/usr/jdk1.7)

配置文件3:slaves (这个文件里面保存所有slave节点)

写入以下内容:


配置文件4:core-site.xml


<configuration>
       <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:8020</value>
       </property>
       <property>
                <name>io.file.buffer.size</name>
                <value>131072</value>
        </property>
       <property>
               <name>hadoop.tmp.dir</name>
               <value>file:/home/aboutyun/tmp</value>
               <description>Abase for other temporary   directories.</description>
       </property>
        <property>
               <name>hadoop.proxyuser.aboutyun.hosts</name>
               <value>*</value>
       </property>
       <property>
               <name>hadoop.proxyuser.aboutyun.groups</name>
               <value>*</value>
       </property>
</configuration>

配置文件5:hdfs-site.xml

<configuration>
       <property>
                <name>dfs.namenode.secondary.http-address</name>
               <value>master:9001</value>
       </property>
     <property>
             <name>dfs.namenode.name.dir</name>
             <value>file:/home/aboutyun/dfs/name</value>
       </property>
      <property>
              <name>dfs.datanode.data.dir</name>
              <value>file:/home/aboutyun/dfs/data</value>
       </property>
       <property>
               <name>dfs.replication</name>
               <value>3</value>
        </property>
        <property>
                 <name>dfs.webhdfs.enabled</name>
                  <value>true</value>
         </property>
</configuration>

配置文件6:mapred-site.xml

<configuration>
          <property>                                                                  
         <name>mapreduce.framework.name</name>
                <value>yarn</value>
           </property>
          <property>
                  <name>mapreduce.jobhistory.address</name>
                  <value>master:10020</value>
          </property>
          <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>master:19888</value>
       </property>
</configuration>

配置文件7:yarn-site.xml

<configuration>
        <property>
               <name>yarn.nodemanager.aux-services</name>
               <value>mapreduce_shuffle</value>
        </property>
        <property>                                                                
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
               <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
        <property>
               <name>yarn.resourcemanager.address</name>
               <value>master:8032</value>
       </property>
       <property>
               <name>yarn.resourcemanager.scheduler.address</name>
               <value>master:8030</value>
       </property>
       <property>
            <name>yarn.resourcemanager.resource-tracker.address</name>
             <value>master:8031</value>
      </property>
      <property>
              <name>yarn.resourcemanager.admin.address</name>
               <value>master:8033</value>
       </property>
       <property>
               <name>yarn.resourcemanager.webapp.address</name>
               <value>master:8088</value>
       </property>
</configuration>

3、复制到其他节点
上面配置完毕,我们基本上完成了90%了剩下就是复制。我们可以把整个hadoop复制过去:使用如下命令:


sudo scp -r /usr/hadoop aboutyun@slave1:~/

这里记得先复制到 home/aboutyun下面,然后在转移到 /usr下面。
后面我们会经常遇到问题,经常修改配置文件,所以修改完一个配置文件后,其他节点都需要修改,这里附上脚本操作方便:
一、节点之间传递数据:
第一步:vi scp.sh
第二步:把下面内容放到里面(记得修改下面红字部分,改成自己的)
#!/bin/bash
#slave1
scp /usr/hadoop/etc/hadoop/core-site.xml  aboutyun@slave1:~/
scp /usr/hadoop/etc/hadoop/hdfs-site.xml  aboutyun@slave1:~/                     
#slave2
scp /usr/hadoop/etc/hadoop/core-site.xml  aboutyun@slave2:~/
scp /usr/hadoop/etc/hadoop/hdfs-site.xml  aboutyun@slave2:~/
第三步:保存scp.sh
第四步:bash scp.sh执行
二、移动文件夹:
可以自己写了。


4.配置环境变量
第一步:
vi /etc/environment

第二步:添加如下内容:记得如果你的路径改变了,你也许需要做相应的改变。




4、启动验证

4.1 启动hadoop
格式化namenode:

hdfs namenode –format

或则使用下面命令:
hadoop namenode format

启动hdfs:

start-dfs.sh

此时在master上面运行的进程有:
namenode
secondarynamenode

slave节点上面运行的进程有:datanode

启动yarn:
start-yarn.sh

我们看到如下效果:
master有如下进程:




slave1有如下进程


此时hadoop集群已全部配置完成!!!
【注意】:而且所有的配置文件<name>和<value>节点处不要有空格,否则会报错!
然后我们输入:(这里有的同学没有配置hosts,所以输出master访问不到,如果访问不到输入ip地址即可)



以上全部都为转载,我最后弄的时候基本上都是按这个来弄的。但我的是在hadoop用户下安装的hadoop2.6.0,除了路径不一样,其他的也都是一致的。基本上按这个来都没问题。感谢这位美女大神~授人以鱼不如授人以渔!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值