zoukankan      html  css  js  c++  java
  • hadoop2 环境的搭建(手动HA)

    1、手工切换ha的环境的搭建(比hadoop1多出来journalnode的配置)

    namenode:hadoop110和hadoop111

    datanode:hadoop112、hadoop113、hadoop114

    journalnode:hadoop110、hadoop111、hadoop112

    resourcemanager:hadoop110

    nodemanager:hadoop112、hadoop113、hadoop114

    1.1、配置文件(hadoop-env.sh、core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml)

    1.1.1、hadoop-env.sh

    export JAVA_HOME=/usr/jdk

    上面是我本机的路径,需要改成真实的jdk路径

    export JAVA_HOME=JDK的路径

    1.1.2、core-site.xml

    <configuration>
    
    <property>
    
    <name>fs.defaultFS</name>
    
    <value>hdfs://cluster1</value>
    
    </property>
    
    设置默认的HDFS路径,有多个HDFS集群同时工作时,默认值在这里指定
    
    <property>
    
    <name>hadoop.tmp.dir</name>
    
    <value>/usr/hadoop/tmp</value>
    
    </property>
    
    设置NameNode DataNode JournalNode等存放数据的公共目录,也可以单独指定
    
    </configuration>

    1.1.3、hdfs-site.xml

    <configuration>
    
    <property>
    
    <name>dfs.replication</name>
    
    <value>2</value>
    
    </property>
    
    <!-- 集群中文件的副本数 -->
    
    <property>
    
    <name>dfs.nameservices</name>
    
    <value>cluster1</value>
    
    </property>
    
    <!-- 使用federation时,这里填写所有集群的别名,用逗号分隔 -->
    
    <property>
    
    <name>dfs.ha.namenodes.cluster1</name>
    
    <value>hadoop110,hadoop111</value>
    
    </property>
    
    <!-- 配置集群的NameNode几点,这里是NameNode 的别名,需要对每个NameNode再进行详细的配置-->
    
    <property>
    
    <name>dfs.namenode.rpc-address.cluster1.hadoop110</name>
    
    <value>hadoop110:9000</value>
    
    </property>
    
    <!-- 配置NameNode的RPC地址 -->
    
    <property>
    
    <name>dfs.namenode.http-address.cluster1.hadoop110</name>
    
    <value>hadoop110:50070</value>
    
    </property>
    
    <!-- 配置NameNode的HTTP地址 -->
    
    <property>
    
    <name>dfs.namenode.rpc-address.cluster1.hadoop111</name>
    
    <value>hadoop111:9000</value>
    
    </property>
    
    
    
    <property>
    
    <name>dfs.namenode.http-address.cluster1.hadoop111</name>
    
    <value>hadoop111:50070</value>
    
    </property>
    
    
    
    <property>
    
    <name>dfs.namenode.shared.edits.dir</name>
    
    <value>qjournal://hadoop110:8485;hadoop111:8485;hadoop112:8485/cluster1</value>
    
    </property>
    
    <!-- 指定集群(cluster1)的两个NameNode共享edits文件目录时使用的JournalNode集群信息 -->
    
    <property>
    
    <name>dfs.ha.automatic-failover.enabled.cluster1</name>
    
    <value>false</value>
    
    </property>
    
    <!-- 指定集群(cluster1)是否启动自动故障恢复,即当NameNode出故障事,是否自动切换到另一台NameNode -->
    
    <property>
    
    <name>dfs.client.failover.proxy.provider.cluster1</name>
    
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyPrivider</value>
    
    </property>
    
    <!-- 指定集群(cluster1)出故障时,哪个实现类负责执行故障切换 -->
    
    <property>
    
    <name>dfs.journalnode.edits.dir</name>
    
    <value>/usr/hadoop/tmp/journal</value>
    
    </property>
    
    <!-- 指定JournalNode集群在对NameNode的目录进行共享时,自己存储数据的磁盘路径 -->
    
    <property>
    
    <name>dfs.ha.fencing.methods</name>
    
    <value>sshfence</value>
    
    </property>
    
    <!-- 一旦需要NameNode切换,使用ssh方式进行切换 -->
    
    <property>
    
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    
    <value>/root/.ssh/id_rsa</value>
    
    </property>
    
    </configuration>

    1.1.4、yarn-site.xml

    <configuration>
    
    <property>
    
    <name>yarn.resourcemanager.hostname</name>
    
    <value>hadoop110</value>
    
    </property>
    
    <property>
    
    <name>yarn.nodemanager.aux-services</name>
    
    <value>mapreduce_shuffle</value>
    
    </property>
    
    </configuration>

    1.1.5、mapred-site.xml

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

    1.1.6、slaves

    hadoop112
    
    hadoop113
    
    hadoop114

    1.2、启动journalnode集群

    在hadoop110、hadoop111、hadoop112上分别执行:

    sbin/hadoop-daemon.sh start journalnode

     扩展

    停止journalnode

    sbin/hadoop-daemon.sh stop journalnode
    

      

    1.3、格式化namenode、启动namenode

    在hadoop110或者hadoop111上执行:

    bin/hdfs namenode -format
    
    sbin/hadoop-daemon.sh start namenode

    在hadoop111上执行

    bin/hdfs namenode -bootstrapStandby
    sbin/hadoop-daemon.sh start namenode

    *hadoop111的格式化,操作是关键是是把hadoop110上面的tmp/dfs下的fsimage和edit拷贝过去 

    把其中一个NameNode切换为active状态

    bin/hdfs haadmin -failover --forceactive hadoop110 hadoop111

    1.4、启动datanode

    sbin/hadoop-daemons.sh start datanode
    

      

    1.5、启动resourcemanager和nodemanager

    在hadoop110或者hadoop111上执行

    sbin/yarn-daemon.sh start resourcemanager
    
    sbin/yarn-daemons.sh start nodemanager

      

    1.6、启动

    遇到的问题:

    1、Linux 环境变量的配置解决(-bash: jps: command not found)问题:需要把jdk的bin目录也配置到环境变量中(是jdk/bin)

    2、无法访问namenode(访问一直超时)

    2.1、在centos7下关闭防火墙:

    systemctl disable firewalld
    
    systemctl mask firewalld
    
    yum remove firewalld -y

     2.2、关闭selinux

    2.2.1、临时关闭

    setenforce 0

    2.2.2、通过修改配置文件永久关闭

    可以修改配置文件/etc/selinux/config,将SELINU置为disabled

    2.2.3、通过命令永久关闭

    sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config 

    3、配置hosts文件时,不能遗留有localhost的配置

  • 相关阅读:
    codebak
    (转)关于APACHE和php
    c#pda(wince)摄像头拍照程序
    C#语言实现WINCE全屏幕显示
    (转).NET反编译工具Reflector及插件
    (转)解决WebService第一次访问速度慢的问题
    (转)C#.net winform skin 皮肤大全
    python模块整理19pyMongo
    python模块整理26数据持久性pickle、shelve、SQLite
    python模块整理21multiprocessing
  • 原文地址:https://www.cnblogs.com/hpuCode/p/5201651.html
Copyright © 2011-2022 走看看