美文网首页大数据大数据
hadoop(13)--分布式集群搭建

hadoop(13)--分布式集群搭建

作者: ROCK_杰哥 | 来源:发表于2018-04-25 08:15 被阅读253次

    首先思考一个问题:hadoop分布式集群的主要工作在什么地方?
    HDFS分布式文件存储的集群,分布式文件存储要保持文件的一致性,这个是一个重点,那么怎么搭建才能保持一致性呢,这个问题前辈们已经给出了解决方案,总结为一张图


    image.png

    解释一下上图:
    1,两个NameNode只有一个提供服务两一个处于休眠
    2,当提供服务的节点发生异常的时候,通过监控zkfc,修改zookeeper的临时节点,另一个监控zkfc,感知到之后,就会发出ssh kill指令将异常的NameNode杀掉,若在杀掉的过程工出现超时或者其他异常,会执行一个脚本(这个脚本是我们自己的脚本,是为了可靠的将异常服务杀掉)后,启动standby的节点,启动之后状态位activity
    3,若手动将异常节点启动,则是一个standyby,很好理解,先来后到嘛,哈哈···
    理解了之后,继续开车
    我是这么规划的,没有服务器就用虚拟机来代替,电脑性能有限,考虑一番之后用7台虚拟centos来搭这个集群,也可以是10台,考虑到内存吃紧,7台,说明过程就行了
    1,my02 namenode zkfc
    2,my03 namenode zkfc
    3,my04 resourceManager
    4,my05 resourceManger
    5,my06 zookeeper journalnode datanode nodemanager
    6,my07 zookeeper journalnode datanode nodemanager
    7,my08 zookeeper journalnode datanode nodemanager
    这样分布是有原因的,就是datanode要和nodemanager在一个服务器上,这是遵循的数据本地性,这个原则spark也不例外,就是计算,数据在一起
    开始!
    1,解压hadoop


    image.png
    2,vi hadoop_env.sh
    image.png

    修改core-site.xml

    <configuration>
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://ns/</value>
    </property>
    <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/songlj/app/hadoop-2.4.1/tmp</value>
    </property>
    <property>
    <name>ha.zookeeper.quorum</name>
    <value>my06:2181,my07:2181,my08:2181</value>
    </property>
    </configuration>
    

    修改hdfs-site.xml

    <configuration>
    <property>
    <name>dfs.nameservices</name>
    <value>ns</value>
    </property>
    <property>
    <name>dfs.ha.namenodes.ns</name>
    <value>nn1,nn2</value>
    </property>
    <property>
    <name>dfs.namenode.rpc-address.ns.nn1</name>
    <value>my02:9000</value>
    </property>
    <property>
    <name>dfs.namenode.http-address.ns.nn1</name>
    <value>my02:50070</value>
    </property>
    <property>
    <name>dfs.namenode.rpc-address.ns.nn2</name>
    <value>my03:9000</value>
    </property>
    <property>
    <name>dfs.namenode.http-address.ns.nn2</name>
    <value>my03:50070</value>
    </property>
    <property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://my06:8485;my07:8485;my08:8485/ns</value>
    </property>
    <property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/home/songlj/app/hadoop-2.4.1/journaldata</value>
    </property>
    <property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
    </property>
    <property>
    <name>dfs.client.failover.proxy.provider.ns</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <property>
    <name>dfs.ha.fencing.methods</name>
    <value>
    sshfence
    shell(/bin/true)
    </value>
    </property>
    <property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/home/songlj/.ssh/id_rsa</value>
    </property>
    <property>
    <name>dfs.ha.fencing.ssh.connect-timeout</name>
    <value>30000</value>
    </property>
    </configuration>
    

    修改mapreduce mapred-site.xml

    <configuration>
    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    </property>
    </configuration>    
    

    修改yarn-site.xml

    <configuration>
    <property>
    <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
    </property>
    <property>
    <name>yarn.resourcemanager.cluster-id</name>
    <value>yrc</value>
    </property>
    <property>
    <name>yarn.resourcemanager.ha.rm-ids</name>
    <value>rm1,rm2</value>
    </property>
    <property>
    <name>yarn.resourcemanager.hostname.rm1</name>
    <value>my04</value>
    </property>
    <property>
    <name>yarn.resourcemanager.hostname.rm2</name>
    <value>my05</value>
    </property>
    <property>
    <name>yarn.resourcemanager.zk-address</name>
    <value>my06:2181,my07:2181,my08:2181</value>
    </property>
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>
    </configuration>
    

    3,配置各个节点之间的无秘登录

    ssh-keygen -t rsa
      197  ssh-copy-id my02
      198  ssh my01
      199  ssh my02
      200  ssh-copy-id my03
      201  ssh-copy-id my04
      202  ssh-copy-id my05
      203  ssh-copy-id my06
      204  ssh-copy-id my07
      205  ssh-copy-id my08
    

    4,修改hdfs的slave文件vi slaves

    my06
    my07
    my08
    ~
    5,拷贝到各个服务器上
    scp -r hadoop-2.4.1/ my03:/home/songlj/app
    244 scp -r hadoop-2.4.1/ my04:/home/songlj/app
    245 scp -r hadoop-2.4.1/ my05:/home/songlj/app
    246 scp -r hadoop-2.4.1/ my06:/home/songlj/app
    247 scp -r hadoop-2.4.1/ my07:/home/songlj/app
    248 scp -r hadoop-2.4.1/ my08:/home/songlj/app
    6,在06,07,08上启动journalnode
    ./hadoop-daemon.sh start journalnode
    成功标志

    image.png
    7,格式化nameNode
    ./hadoop namenode -format
    

    8,拷贝到my03
    scp -r tmp/ my03:/home/songlj/app/hadoop-2.4.1/

    9,格式化zkfc
    [songlj@my02 bin]$ hdfs zkfc -formatZK
    会在zk下建节点


    image.png

    10,启动hdfs

    重点,容易忽视一定要先启动zk,因为zkfc需要注册到zk上去,这个容易忽视导致zkfc起不来,启动zk,看上一篇

    [songlj@my02 ~]$ start-dfs.sh

    11,my04启动yarn
    start-yarn.sh

    12,启动my05的resourcemanager
    到app/hadoop-2.4.1/sbin下执行
    ./yarn-daemon.sh start resourcemanager

    13,关闭防火墙
    sudo service iptables stop
    287 sudo service iptables status
    14,启动关闭
    sudo chkconfig iptables off

    看效果:


    image.png image.png image.png

    相关文章

      网友评论

        本文标题:hadoop(13)--分布式集群搭建

        本文链接:https://www.haomeiwen.com/subject/jxwslftx.html