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台

                                   

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

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


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

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



2. 名词了解

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

 在hadoop1.x 中使用的问题 :

(1)HDFS存在的问题:

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

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

(2)MapReduce存在的问题:

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

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

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

                                                  





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独立工作,数据共享;

                                      

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

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

<span style="font-size:18px;"><span style="font-family:Comic Sans MS;"><span style="font-family:Times New Roman;"> yuan@LABELNET:/mnt/8A962B78962B6443/BIGDATA/Install$ scp hadoop-2.6.0.tar.gz
note1@192.168.56.3:~</span></span></span>

 

 

   解压 :

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 安装节点配置如下

                         

      (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) 配置服务名  :配置自己的服务名

<span style="font-family:宋体;"><property>
  <name>dfs.nameservices</name>
  <value>yuannews</value>
 </property></span>

   (2)
配置所有 namenode 的名字,目前就两个,不改!:修改服务名
<property>
  <name>dfs.ha.namenodes.yuannews</name>
  <value>nn1,nn2</value>
</property>

   (3)配置 namenode :修改服务名和节点所在位置
<property>
  <name>dfs.namenode.rpc-address.yuannews.nn1</name>
  <value>note0:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.yuannews.nn2</name>
  <value>note1:8020</value>
</property>

    (4)配置 http  协议的 端口和地址 :修改服务名和节点所在位置
<property>
  <name>dfs.namenode.http-address.yuannews.nn1</name>
  <value>note0:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.yuannews.nn2</name>
  <value>note1:50070</value>
</property>

   (5)配置  JournalNode (note1,note2,note3):修改节点所在位置和服务名
<span style="font-family:Times New Roman;"><property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://note1:8485;note2:8485;note3:8485/yuannews</value>
</property></span>

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

<property>
  <name>dfs.client.failover.proxy.provider.yuannews</name>
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

  (7)配置  sshfence : 修改SSH 目录,在root下统一为 /root / .ssh 中的私钥,注意名字是否一样!
<property>
  <name>dfs.ha.fencing.methods</name>
  <value>sshfence</value>
</property>

<property>
  <name>dfs.ha.fencing.ssh.private-key-files</name>
  <value>/root/.ssh/id_rsa</value>
</property>


  (8)配置  journalnode  的工作目录 :创建改目录
<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/opt/hadoop/jn/data/</value>
</property>

    (9)配置 自动开关 :为zookeeper 进行自动控制,
<property>
   <name>dfs.ha.automatic-failover.enabled</name>
   <value>true</value>
 </property>


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


3.5 配置 core-site.xml 

 

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

<span style="font-family:Times New Roman;"><span style="font-family:宋体;"><property>
  <name>fs.defaultFS</name>
  <value>hdfs://yuannews</value>
</property>
</span></span>

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

 (3)配置  hdfs 的 工作目录,默认在 tmp  下 :我们放在 /opt/hadoop2 下 ,最好不要放在某个用户目录下
<span style="font-family:Times New Roman;"><property>
  <name>hadoop.tmp.dir</name>
  <value>/opt/hadoop2</value>
</property></span>

3.6
配置  slaves

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

<span style="font-family:Times New Roman;">192.168.56.3
192.168.56.4
192.168.56.5
</span>


 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

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

                 

  

   注意 :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 字样,否则回报错!




   (2)配置第二个 namenode

              首先要 启动 第一个namenode , 

           

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

   

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

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

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

  


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

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

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


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/  

  

 

 

http://note1:50070/


4.分布式配置完毕

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

    配置中注意几点:

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

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

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

       (4)  zkfc 初始化!

已标记关键词 清除标记
Title: Deep Learning with Hadoop Author: Dipayan Dev Length: 259 pages Edition: 1 Language: English Publisher: Packt Publishing Publication Date: 2017-03-06 ISBN-10: 1787124762 ISBN-13: 9781787124769 Book Description Deep Learning involves extracting features and insights from multiple layers of the data. This book will teach you how to deploy the deep learning networks with Hadoop. Starting with understanding what deep learning is and what the various models associated with deep learning are, this book will then show you how to set up the Hadoop environment for deep learning. In this book, you will also learn how to overcome the challenges that you face while implementing distributed deep learning with Hadoop. The book will also show you how you can implement and parallelize Deep Belief Networks, CNN, RNN, RBM and much more using the popular deep learning library deeplearning4j. Get in depth mathematical explanations, visual representations to understand the implementation of Denoising AutoEncoders with deeplearning4j. To give you a more practical perspective, the book will also teach you how you can implement image classification, audio processing and natural language processing on Hadoop. By the end of this book, you will know how to deploy deep learning in distributed systems using Hadoop What you will learn Explore Deep Learning and various models associated with it. Understand the challenges of implementing distributed deep learning with Hadoop and how to overcome it Implement Convolutional Neural Network (CNN) with deeplearning4j Delve into the implementation of Restricted Boltzmann Machines (RBM) Understand the mathematical explanation for implementing Recurrent Neural Networks (RNN) Get hands on practice of deep learning and their implementation with Hadoop. Table of Contents Chapter 1. Introduction to Deep Learning Chapter 2. Distributed Deep Learning for Large-Scale Data Chapter 3. Convolutional Neural Network Chapter 4. Recurrent Neural Network Chapter 5. Restricted Boltzmann Machines Chapter 6. Autoencoders Chapter 7. Miscellaneous Deep Learning Operations using Hadoop
相关推荐
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页