集群搭建Hadoop 环境为CentOS7/JDK1.8

在看这一篇之前请先看:https://www.jianshu.com/p/bcb2f77d90e8 单机搭建Hadoop 保证可以熟悉hadoop的单机配置,这样不至于无脑粘贴xml文件内容导致各种问题。这边单机部署采用的是hadoop3这边我们回归到hadoop2.7去搭集群,其实都一样。

1.准备

本次要求准备三台服务器,这边演示使用VMware开了三个环境。

192.168.20.3 Master
192.168.20.4 Slave1
192.168.20.5 Slave2

这里要说一下,首先三个环境都要有一个相同名字的用户,我创建了hadoop用户,并互相配置好互信。
我们一步一步进行。
在Master/Slave1/Slave2的环境,执行命令sudo vim /etc/hosts

请依照自己具体ip进行设置

然后创建hadoop用户,我再Master已经有hadoop用户了,这边在Salve1和Slave2创建。原因就是如果我们不使用相同名字的用户,ssh配置会比较麻烦,很容易用自身用户名去做另外机器的用户名,从而出现用户无权限的问题。
具体创建方法:
root权限下分别执行
adduser hadoop
passwd hadoop
然后visudo 修改一下内容,给hadoop用户权限。
然后配置互信,执行ssh-keygen -t rsa 创建目录,和之前一样,这里不做赘述。唯一要提醒的一点是:
ssh 对目录的权限有要求,代码中要设置下新生成的config文件权限才行。
~目录权限是750,~/.ssh 的是700, ~/.ssh/* 的是600,~/.ssh/config 是700
否则容易出现权限问题。
配置好了之后,三台机器两两互信。可以采用两种方式:
1.ssh-copy-id -i
2.直接互相把ras.pub的内容粘贴到 authorized_keys 文件中。
都可以,我用的第二种,比较暴力,注意,一定要看好用户!!!别问我怎么知道的。
配置好了检查一下,如果互相可以ssh ip date就证明成功啦!比如在Master进行 ssh Slave1 date
第一次要写个yes再回车,等第二次就可以直接不输入密码得到结果了。这样准备工作就完成了。

2.正式搭建

集群和单机的区别就是准备工作稍微复杂一些。其他的差不多,我们把Master作为主节点,NameNode和ResourceManager都在主节点上,这边我把Secondary NameNode也放在主节点上了。Slave1和Salve2作为从节点,主要运行NodeManager和DataNode。
简单解释一下:

  • NameNode:主要是管理文件系统的命名空间,维护文件系统树和文件与目录。这些信息以两个文件形式永久保存在本地磁盘上:命名空间镜像文件和日志编辑文件。应该放在主节点上。
  • DataNode:文件系统的工作节点。他们需要储存并检索数据块,并且定期向NameNode发送他们所储存的块的列表。适合放在Slave节点上。
  • Secondary NameNode:辅助NameNode,它不能当作NameNode。定期合并编辑日志与命名空间镜像,防止编辑日志过大,一般单独的物理机上运行,当然也可以放主节点上。
  • ResourceManager:基于程序对资源的需求进行调度,是一个中心服务,做的工作就是去调度、启动每一个 Job 所属的 ApplicationMaster、另外监控 ApplicationMaster 的存在情况。放主节点上。
  • NodeManager:是每台机器框架代理,是执行应用程序的容器,监控应用程序资源的使用情况(CPU,内存,硬盘,网络)。然后向调度器也就是ResourceManager进行汇报。

好了!我们现在Master机器上搞事情!
在hadoop目录下,创建一个dfs目录,里面创建三个文件夹,分别是name、data、namesecondary
如果完成过之前帖子的单机部署那么我们需要,清理一下里面的current文件夹,直接删掉就ok。防止因为Version问题导致的不同步从而无法启动。
我又创建了一个tmp文件夹
hadoop下目录结构应该是这样的:


hadoop目录

好的,那么我们去etc/hadoop目录下去依次修改配置文件!
再一次注意!里面的路径和端口号不要无脑粘贴,请根据自己具体的路径去配置。
首先修改的是hdfs-site.xml



    dfs.replication
    2


    dfs.namenode.name.dir
    /opt/soft/hadoop-2.7.1/dfs/name


    dfs.datanode.data.dir
    /opt/soft/hadoop-2.7.1/dfs/data


    dfs.webhdfs.enabled
    true


    dfs.permissions
    false


  dfs.namenode.secondary.http-address
  Master:50090


然后是core-site.xml


        
          hadoop.tmp.dir
          /opt/soft/hadoop-2.7.1/tmp
          Abase for other temporary directories.
        
         
           fs.defaultFS
           hdfs://Master:9000
         

然后是mapred-site.xml


    
          mapreduce.framework.name
          yarn
    

然后是yarn-site.xml


 
    yarn.resourcemanager.hostname
    Master
  
    
   
       yarn.nodemanager.aux-services
       mapreduce_shuffle
   
   
    yarn.log-aggregation-enable
    true
  
  
    yarn.log-aggregation.retain-seconds
    604800
  

最后是slaves文件

Slave1
Slave2

好的!!这样Master就配置好了!!!接下来就是配置Slave1和Slave2的时间了!我们可以采用简单暴力的方式去搞。直接把Master的hadoop文件夹传过去!对!就是直接传过去就行了,啥都不用改。

执行一下hdfs namenode -format格式化
如果成功了证明没啥问题,直接启动所有!start-all.sh
等待之后我们用jps指令看一下
Master:

Master

Slave1:
Slave1

Slave2:
Slave2

证明节点都正常。去web ui去看一下是否真正常。
我是去Master的50070端口查看
点击Datanodes选项卡可以看到:
http://192.168.20.3:50070

可以看到Slave1和Slave2的DataNode也都真实存在,证明集群部署成功!可以使用啦~!

PS:如果最后结果不正常,请分别查看hadoop的logs文件夹下的日志文件。会有错误提示。

---------------------------------------分割线-------------------------------------------------
当时写的太粗糙了,其实启动应该按照hdfs和yarn分别启动这样的方式。
hdfs就用 start-dfs.sh
yarn用start-yarn.sh
因为ResourceManager不一定会配置在Master上,如果在Slave1上,我们必须去Slave启动yarn,否则会执行失败。

还有一点,我们需要启动jobhistoy去看日志。这一点要配置mapred-site.xml配置文件


        
                mapreduce.framework.name
                yarn
        
        
        
                mapreduce.jobhistory.address
                Master:10020
        
        
        
                mapreduce.jobhistory.webapp.address
                Master:19888
        
        
        
                mapreduce.jobhistory.intermediate-done-dir
                /history/done_intermediate
        
        
        
                mapreduce.jobhistory.done-dir
                /history/done
        

然后使用指令:
./mr-jobhistory-daemon.sh start historyserver
启动,当然停止就换成stop
我们以后就可以通过master:19888 去查询历史日志了。

你可能感兴趣的:(集群搭建Hadoop 环境为CentOS7/JDK1.8)