hadoop - hadoop2.6 分布式 - 集群环境搭建 - Hadoop 2.6 分布式安装配置与启动

1.开始

   个人配置 : 笔记本(deepin linux ) + vritualBox ( ubuntu ) x 3

   说明 : 一定要看 !!!

     在上篇  hadoop - hadoop2.6 分布式 - 集群环境搭建 - JDK安装配置和SSH安装配置与免密码登陆(集群中)
中 ,配置 SSH免密码登陆,是在各个系统 用户下进行配置的,然而,可以进行正常的连接使用,但并不能就行配置Hadoop , 因为没有办法 ,让其 的 目录一致 !!!比如 note1节点 ,用户为 note1 , 如果 在note1 用户下进行配置,则在配置Hadoop的时候,没有办法进行配置 SSH的位置,配置一致!!!

    在linux下 ,有 root 目录 ,所以在进行配置的时候,需要讲上篇的SSH免密码登陆的配置进行在root用户下重新进行配置!这样在配置的时候,就可以配置一样了,均是在root下,目录统一,容易配置。 还有的就是权限问题了,root下权限较为高,所以在配置的时候,也是很方便的,当然不用担心安全问题!

    完!


  准备 :

     1) hadoop2.6 和 zookeeper3.4.6

         百度云下载

        也可以在 apache官方网站下载 , 比如hadoop官方网站下载    和   zookeeper官方网站下载   

     2)可以免密码登陆的linux 系统 4台

                                    hadoop - hadoop2.6 分布式 - 集群环境搭建 - Hadoop 2.6 分布式安装配置与启动_第1张图片

        我这是3台 ubuntu 系统 和 本机的 deepin linux 系统 ;

       当然 ,同时也可以 免密码登陆 :

hadoop - hadoop2.6 分布式 - 集群环境搭建 - Hadoop 2.6 分布式安装配置与启动_第2张图片


   注意 :一定是在 root 下配置 免密码登陆,不是的话,很麻烦 ! 没台都是!

     还有 这里在进行 ssh 登陆的时候,使用的是机子名称 ,即 root@note1 , 前面是 使用 note1的 IP地址,也可以实现,这里为了方便,在宿主计算机的 hosts文件进行主机配置,所以可以使用 root@note1 进行登陆!

hadoop - hadoop2.6 分布式 - 集群环境搭建 - Hadoop 2.6 分布式安装配置与启动_第3张图片


2. 名词了解

   2.1 背景 (hadoop2.x 使用的背景)

 在hadoop1.x 中使用的问题 :

(1)HDFS存在的问题:

            1.NameNode单点故障,难以应用与在线场景

             2.NameNode压力过大,且内存受限,影响系统扩展性

(2)MapReduce存在的问题:

           1.JobTracker访问压力大,影响系统拓展性

           2.难以支持除了MapReduce之外的计算框架,比如Spark,Storm

              Spark :内存计算框架,Storm 流式计算框架;

                                                   hadoop - hadoop2.6 分布式 - 集群环境搭建 - Hadoop 2.6 分布式安装配置与启动_第4张图片





2.2.Hadoop2.x

  1).HDFS NN Federation , HA ;

  2).MapReduce : 运行 在YARN上的MR;

  3). YARN : 资源管理系统

 

2.3.HDFS 2.x

  1).解决了HDFS的单点故障和内存受限问题

  2).解决单点故障

     2.1) HDFS HA :通过主备NameNode解决

     2.2 )如果主NameNode发生故障,则切换到备NameNode

2.4.解决内存受限问题

    2.11HDFSFederation

    2.12 水平拓展,支持多个NameNode

    2.13 每个NameNode分管一部分目录

    2.14 所有的NameNode共享所有的DataNode存储资源

    2.15.仅仅是架构上发生了变化,使用方式不变化;

    2.16.HDFS使用者透明,Java API 还可以使用!



2.5.HDFS - Federation

 

  2.5.1 通过多个namenode / namespcae 把元数据的存储和管理分散到多个节点中,

使得namenode/namespace可以通过增加机器来进行水平拓展;

 

  2.5.2 能把单个namenode的负载分散到多个节点中,在HDFS数据规模较大的时候,不会也降低HDFS的性能。可以通过多个namespace来隔离不同类型的应用,把不同类型的应>HDFS元数据存储和管理分派到不同的namenode中;

 

  2.5.3 每个NameNode独立工作,数据共享;

                                       hadoop - hadoop2.6 分布式 - 集群环境搭建 - Hadoop 2.6 分布式安装配置与启动_第5张图片

2.6 .HDFS 2.x HA

 

  主备NameNode

  2.6.1 解决单点故障问题

    (1)主NameNode对外提供服务,备NameNode同步主NameNode元数据以待切换;

   (2)所有的DataNode同时向两个NameNode汇报数据块信息

  2.6.2 两种切换选择

   (1)手动切换:通过命令实现主备之间的切换,可以用HDFS升级等场合

   (2)自动切换:基于Zookeeper的实现

 

  2.6.3 基于Zookeeper自动切换方案

   (1Zookeeper Failover Controller :监控NameNode的健康状态,并向Zookeeper注册NameNode

     (2) NameNode挂掉后, ZKFC NameNode竞争锁,获得ZKFC锁的NameNode变为active

 

2.7.YARN

  yarn : Yet Another Resource Negoiator

  2.7.1 Hadoop2.x  资源管理系统

    (1) 核心思想:将MRv1 中 的 JobTracker的资源管理和任务调度两个功能分开,>分别由ResourceManagerApplicationMaster进程实现

    (2) ResourceManaer :负责整个集群的资源管理和调度

    (3) ApplicationMaster : 负责应用程序相关的事务,比如任务调度,任务监控和

容错;

 

 2.7.2 YARN的引入使得多个计算框架可以运行在一个集群中

    (1)每个应用程序对应一个ApplicationMaster

     (2) 目前多个计算框架可以运行在YARN上,比如MapReduce Spark ,Storm 等;

2.8 .MapReduc On YARN

  将MapReduce作业直接运行在YARN上,而不是由JObTrackerTaskTracker构建的MRv>系统中

  2.8.1 基本功能模块

    (1YARN负责资源管理和调度

    (2MRAppMaster :负责任务切分,任务调度,任务监控和容错等;

    (3MapTask/ReduceTask :任务驱动,与MRv1一致;

  2.8.2 每个MapReduce作业对应一个MRAppMaster

    (1)MrAppMaster任务调度

    (2YARN将资源分配给MRAPPMaster

    (3)MRAppMaster进一步将资源分配给内部的任务

  2.8.3 MRAppMater容错

    (1)失败:由YARN重新启动

    (2)任务失败后,MRAppMaster重新申请资源;


3. 配置

  3.1  给每台复制hadoop.tar.gz

        当然也可以先不复制,可以在一台上配置完毕后,每台都复制一份!

 yuan@LABELNET:/mnt/8A962B78962B6443/BIGDATA/Install$ scp hadoop-2.6.0.tar.gz
[email protected]:~

  hadoop - hadoop2.6 分布式 - 集群环境搭建 - Hadoop 2.6 分布式安装配置与启动_第6张图片

 

   解压 :

root@note3:~$ tar -zxvf hadoop-2.6.0.tar.gz 

  重命名为 hadoop2.6
root@note3~$mv hadoop-2.6.0 ./hadoop-2.6 

当然也可以建立软链接 :
ln -sf /xx /xxx/xx  /Hadoop/hadoop2.6

文件夹全部删除 :

rm -rf  文件夹

配置参考文档 : 官方配置参考文档


  

 3.2 修改 hadoop-env.sh 

    /etc/hadoop/,修改其中的JAVA_HOME为 本机的Java 安装目录 ;


 3.3 安装节点配置如下

                          hadoop - hadoop2.6 分布式 - 集群环境搭建 - Hadoop 2.6 分布式安装配置与启动_第7张图片

      (1)namenode : node1 , node2

        (2)  datanode : node2 , node3, node4

        (3)  zookeeper : node1 ,node2,node3

        (4)  zkfc   : node1,node2 (和namenode一致)

        (5)  journalnode :node1 ,node2,node3

        (6) RourceManager : node1

        (7) DataManager : node2,node3,node4 (和datanode一致)

    

     我的环境中没有 note4,但是我的有 note0 ,所以依次前推就可以了,比如 我的namenode : node0,node1 ;


   3.4 配置  hdfs-site.xml 

       配置 namenode : node0,node1 ;

    (1) 配置服务名  :配置自己的服务名


  dfs.nameservices
  yuannews
 

   (2)
配置所有 namenode 的名字,目前就两个,不改!:修改服务名

  dfs.ha.namenodes.yuannews
  nn1,nn2

   (3)配置 namenode :修改服务名和节点所在位置

  dfs.namenode.rpc-address.yuannews.nn1
  note0:8020


  dfs.namenode.rpc-address.yuannews.nn2
  note1:8020

    (4)配置 http  协议的 端口和地址 :修改服务名和节点所在位置

  dfs.namenode.http-address.yuannews.nn1
  note0:50070


  dfs.namenode.http-address.yuannews.nn2
  note1:50070

   (5)配置  JournalNode (note1,note2,note3):修改节点所在位置和服务名

  dfs.namenode.shared.edits.dir
  qjournal://note1:8485;note2:8485;note3:8485/yuannews

    (6) 配置 提供客户端的一个类 :修改服务名


  dfs.client.failover.proxy.provider.yuannews
  org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

  (7)配置  sshfence : 修改SSH 目录,在root下统一为 /root / .ssh 中的私钥,注意名字是否一样!

  dfs.ha.fencing.methods
  sshfence



  dfs.ha.fencing.ssh.private-key-files
  /root/.ssh/id_rsa


  (8)配置  journalnode  的工作目录 :创建改目录

  dfs.journalnode.edits.dir
  /opt/hadoop/jn/data/

    (9)配置 自动开关 :为zookeeper 进行自动控制,

   dfs.ha.automatic-failover.enabled
   true
 


服务名一定要都写对,不然报错,很纠结的!!!


3.5 配置 core-site.xml 

 

(1)配置dfs的入口 :配置服务名


  fs.defaultFS
  hdfs://yuannews


 (2)
配置 zookeeper 的集群  :配置所在节点的机子地址
 
   ha.zookeeper.quorum
   note0:2181,note1:2181,note2:2181
 

 (3)配置  hdfs 的 工作目录,默认在 tmp  下 :我们放在 /opt/hadoop2 下 ,最好不要放在某个用户目录下

  hadoop.tmp.dir
  /opt/hadoop2

3.6
配置  slaves

 在其中配置 所有集群中机子的地址

192.168.56.3
192.168.56.4
192.168.56.5


 3.7 配置 zookeeper

     zookeeper 配置在 note0,note1,note2 上;

(1)下载好以后,进行解压 !!

tar -zxvf zookeeper-3.4.6.tar.gz 

(2)重命名 zoo-simple.cfg 文件

      进入 conf , 命名 zoo-simple.cfg 为 zoo.cfg , 后进行下面配置

(3)配置 zoo.cfg

         一张图看懂就配置好了,看不懂就 呵呵了。

                  hadoop - hadoop2.6 分布式 - 集群环境搭建 - Hadoop 2.6 分布式安装配置与启动_第8张图片

  

   注意 :zookeeper所在节点都需要进行配置!!

   (4)复制zookeeper到相应节点的机子上

   

root@LABELNET:~$scp -r zookeeper-3.4.6/ root@note1:~/

     (5)配置全局环境变量

              每个相应节点的机子都需要进行配置 全局!

 

        (6)可以尝试着启动 zookeeper

zkServer.sh start
                启动的话,则可以在JPS下看见 QuorumPeerMain 进程!,否则看看 你的 myid 配置的是否正确!

  3.8 格式化

    (1)格式化 namenode

root@LABELNET:~/hadoop-2.6/bin# ./hdfs namenode -format

成功会出现 successfully 字样,否则回报错!


hadoop - hadoop2.6 分布式 - 集群环境搭建 - Hadoop 2.6 分布式安装配置与启动_第9张图片


   (2)配置第二个 namenode

              首先要 启动 第一个namenode , 

           

root@LABELNET:~/hadoop-2.6/sbin# ./hadoop-daemon.sh start namenode

    hadoop - hadoop2.6 分布式 - 集群环境搭建 - Hadoop 2.6 分布式安装配置与启动_第10张图片

      其次是 将初始化过的 dfs 复制到 第二个 节点上:

       在第二个 namenode节点上执行 下面命令:

root@note1:~/hadoop-2.6/bin# ./hdfs namenode -bootstrapStandby

  

hadoop - hadoop2.6 分布式 - 集群环境搭建 - Hadoop 2.6 分布式安装配置与启动_第11张图片


    当然 也可以你在 核心配置文件中 core-site.xml  配置的 dfs 的目录 : /opt/hadoop2 目录下查看,看看 两个目录下自动生成的文件和文件夹是否一样!

(3)格式化 zkfc :  在一个 zkfc 节点上执行就可以了

root@LABELNET:~/hadoop-2.6/bin# ./hdfs zkfc -formatZK

hadoop - hadoop2.6 分布式 - 集群环境搭建 - Hadoop 2.6 分布式安装配置与启动_第12张图片


3.9 启动

root@LABELNET:~/hadoop-2.6/sbin# ./start-dfs.sh 
日志 :
Starting namenodes on [note0 note1] 
note0: starting namenode, logging to /root/hadoop-2.6/logs/hadoop-root-namen
ode-LABELNET.out 
note1: starting namenode, logging to /root/hadoop-2.6/logs/hadoop-root-namen
ode-note1.out 
192.168.56.4: starting datanode, logging to /root/hadoop-2.6/logs/hadoop-roo
t-datanode-note2.out 
192.168.56.5: starting datanode, logging to /root/hadoop-2.6/logs/hadoop-roo
t-datanode-note3.out 
192.168.56.3: starting datanode, logging to /root/hadoop-2.6/logs/hadoop-roo
t-datanode-note1.out 
Starting journal nodes [note1 note2 note3] 
note2: starting journalnode, logging to /root/hadoop-2.6/logs/hadoop-root-jo
urnalnode-note2.out 
note3: starting journalnode, logging to /root/hadoop-2.6/logs/hadoop-root-jo
urnalnode-note3.out 
note1: starting journalnode, logging to /root/hadoop-2.6/logs/hadoop-root-jo
urnalnode-note1.out 
Picked up _JAVA_OPTIONS:   -Dawt.useSystemAAFontSettings=gasp 
Starting ZK Failover Controllers on NN hosts [note0 note1] 
note0: starting zkfc, logging to /root/hadoop-2.6/logs/hadoop-root-zkfc-LABE
LNET.out 
note1: starting zkfc, logging to /root/hadoop-2.6/logs/hadoop-root-zkfc-note
1.out

3.10 可以在不同的节点机子上查看相应节点是否启动,就是上面我们要配置的节点位置!!

3.11 浏览器中查看

       namenote 的两个节点 :

     http://note0:50070/  

   hadoop - hadoop2.6 分布式 - 集群环境搭建 - Hadoop 2.6 分布式安装配置与启动_第13张图片

 

 

http://note1:50070/

hadoop - hadoop2.6 分布式 - 集群环境搭建 - Hadoop 2.6 分布式安装配置与启动_第14张图片

4.分布式配置完毕

    对了,不要忘了,将 hadoop 向每台机子复制一份!!

    配置中注意几点:

    (1)hdfs-site.xml 的配置 服务名一定要对!

    (2)zookeeper 的 myid 和 server.x 一定要对!

    (3)namenote 初始化一定要正确,包括非第一个namenode,执行初始化要正确!

       (4)  zkfc 初始化!

你可能感兴趣的:(hadoop - hadoop2.6 分布式 - 集群环境搭建 - Hadoop 2.6 分布式安装配置与启动)