zoukankan      html  css  js  c++  java
  • 搭建hadoop2 HA

    一、简介

    1.1 背景:

    针对Hadoop 1.x中可能出现的NameNode单点故障(SPOF)或者短时间无法使用的情况,Hadoop 2.x 通过增加一个NameNode的方式进行了改善,而增加一个NameNode后,实际在没有出现问题时,只需要一个NameNode,所以两个NameNode一个处于Standby状态,一个处于Active状态。Standby不对外提供服务,仅同步Active NameNode的状态,以便Active NameNode出现问题时及时切换成Active状态。

    1.2 架构:

    Hadoop 2.x 的两个NameNode一般会配置在两台独立的机器上,Active NameNode会响应集群客户端,而Standby NameNode只是作为Active NameNode的备份,保证在Active NameNode出现问题时能够快速的替代它。

    Standby NameNode通过JournalNodes的通信来与Active NameNode保持同步。

    Active NameNode和Standby NameNode在哪个节点上,是由zookeeper通过主备选举机制来确定的。

    1.3 HDFS HA配置:

    NameNode:对应配置相同的两台物理机,分别运行Active NameNode和Standby NameNode。

    JournalNode:JournalNode不会耗费太多的资源,可以和其它进程部署在一起,如NameNode、Datanode、ResourceManager等,需要至少3个且为基数,这样可以允许(N-1)/2个JNS进程失败。

    DataNode:根据数据量的大小和处理数据所需资源进行配置,一般实际应用中数量较多,且分布在较多的机器上。

    二、安装配置

    各安装文件版本信息

    CentOS-7-x86_64-Minimal-1511.iso

    jdk-8u101-linux-x64.tar.gz

    zookeeper-3.4.8.tar.gz

    hadoop-2.6.0.tar.gz

    2.1 安装centos 7

    2.1.1 安装虚拟机和Linux系统:

    我采用的是VMware Workstation 12 Player安装的centos 7,先安装VMware,此步骤不做描述。

    安装最小化centos,比较简单,也不做详细描述。我没有设置账户,所以开机后的账户为root账户,密码自己设置。

    2.1.2 配置、连接网络

    centos安装后需要手动联网:

    开机后登陆root,修改文件进行联网:

    cd /etc/sysconfig/network-scripts/

    vi ifcfg-eno16777736

    且分别加入主机名和IP地址:

    IPADDR=192.168.152.153      //其它节点将最后一个数字加1即可,按照集群规划的IP进行设置

    重启网络服务

    service network restart

    修改主机名:

    hostnamectl set-hostname 主机名

    2.1.3 设置IP地址和主机名映射

    su root

    vim /etc/hosts

    192.168.152.155 hadoop-namenode1

    192.168.152.153 hadoop-namenode2

    192.168.152.154 hadoop-datanode1

    关闭防火墙和Selinux

    systemctl stop firewalld.service 

    systemctl disable firewalld.service  

    vim /etc/selinux/config

    SELINUX=disabled 

    重启,查看Selinux状态

    gentenforce

    2.2 Hadoop安装前的准备:

    2.2.1 创建组和用户并添加权限:

    groupadd hadoop   //创建组hadoop

    useradd -g hadoop hadoop    //创建组hadoop下的用户hadoop

    passwd hadoop     //修改用户hadoop的密码

    yum install vim      //安装vim

    vim /etc/sudoers     //修改配置文件sudoers给hadoop用户添加sudo权限,添加以下内容:

    hadoop     ALL=(ALL)      ALL

    2.2.2 配置SSH免密码登录:

    在namenode1节点上生成SSH密钥对

    su hadoop

    $ ssh-keygen -t rsa

    将公钥复制到集群所有节点机器上

    $ ssh-copy-id hadoop-namenode1

    $ ssh-copy-id hadoop-namenode2

    $ ssh-copy-id hadoop-datanode1

    通过ssh登录各节点测试是否免密码登录成功

    2.3 Hadoop安装、配置 

    2.3.1 安装JDK

    卸载自带的openjdk(centos7没有自带的openjdk,所以直接安装jdk即可)

    创建安装路径:

    mkdir apache

    tar -xvf jdk-8u101-linux-x64.tar.gz /home/hadoop/apache/

     配置环境变量:

    vim ~/.bash_profile

    添加以下内容:

    export JAVA_HOME=/home/hadoop/apache/jdk1.8.0_101
    export PATH=$PATH:$JAVA_HOME/bin

    保存,通过以下指令使环境变量生效:

    source ~/.bash_profile

    测试JDK是否安装成功:

    java -version

    2.3.2 安装zookeeper集群

    解压缩zookeeper安装包

    tar -xvf zookeeper3.4.8.tar.gz /home/hadoop/apache/

     删除安装包:

    rm zookeeper3.4.8.tar.gz

    配置hadoop用户权限:

    chown -R hadoop:hadoop zookeeper-3.4.8

    修改zookeeper的配置文件:

    cd apache/zookeeper-3.4.8/conf

    cp zoo_sample.cfg zoo.cfg

    vim zoo.cfg

    设置如下:

    tickTime=2000   //客户端心跳时间(毫秒)

    initLimit=10     //循序心跳间隔的最大时间

    syncLimit=5     //同步时限

    dataDir=/home/hadoop/apache/zookeeper3.4.8/data   //数据存储目录

    dataLogDir=/home/hadoop/apache/zookeeper3.4.8/data/log   //数据日志存储目录

    clientPort=2181     //端口号

    maxClientCnxns=2000    //连接zookeeper的最大数量

    server.1=hadoop-namenode1:2888:3888     //设置zookeeper的节点

    server.2=hadoop-namenode2:2888:3888

    server.3=hadoop-datanode1:2888:3888

    创建zookeeper的数据存储目录和日志存储目录:

    cd ..

    mkdir -p data/log

     修改数据存储文件和日志文件的权限:

    chown -R hadoop:hadoop data

    cd data

    chown -R hadoop:hadoop log

    在data目录下创建文件myid,输入内容为1

    echo "1" >> data/myid    //待工作目录同步到其它两个节点后分别修改内容为2和3

    将zookeeper工作目录同步到集群其它节点

    scp -r zookeeper-3.4.8 hadoop@hadoop-namenode2:/home/hadoop/apache/

    scp -r zookeeper-3.4.8 hadoop@hadoop-datanode1:/home/hadoop/apache/

    分别修改myid的值为2和3,并配置所有节点的环境变量。

    vim ~/.bash_profile

    export ZOOKEEPER_HOME=/home/hadoop/apache/zookeeper-3.4.8
    export PATH=$PATH:$ZOOKEEPER_HOME/bin

    到这里zookeeper的集群就已经搭建好了,下面进行启动:

    zkServer.sh start

    查看进程:

    jps

    2.3.3 Hadoop的安装和配置

    在namenode1节点下解压缩安装文件

    tar -xvf hadoop-2.6.0.tar.gz /home/hadoop/apache/

    删除安装文件

    rm hadoop2.6.0.tar.gz

    设置用户权限

    cd apache

    chown -R hadoop:hadoop hadoop-2.6.0/

    配置文件

    cd hadoop-2.6.0/etc/hadoop/

    vim hadoop-env.sh

    保存后,创建刚才设定的目录:

    cd /home/hadoop/apache/hadoop-2.6.0

    mkdir pids

    mkdir -p data/logs

    配置core-site.xml:

    cd etc/hadoop

    vim core-site.xml

    配置hdfs-site.xml:

    vim hdfs-site.xml

     配置mapred-site.xml:

    cp mapred-site.xml.template mapred-site.xml

    vim mapred-site.xml

     配置yarn-site.xml文件:

    vim yarn-site.xml

     配置slave文件:

    vim slaves

    hadoop-datanode1

    创建配置文件中涉及到的目录:

    cd ../..

    mkdir -p data/tmp

    mkdir -p data/journal

    mkdir -p data/namenode

    mkdir -p data/datanode

    将hadoop工作目录同步到集群其它节点

    scp -r hadoop-2.6.0 hadoop@hadoop-namenode2:/home/hadoop/apache/

    scp -r hadoop-2.6.0 hadoop@hadoop-datanode1:/home/hadoop/apache/

     在所有节点上配置环境变量:

    vim ~/.bash_profile

    export HADOOP_HOME=/home/hadoop/apache/hadoop-2.6.0
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    使修改后的环境变量生效: 

    source ~/.bash_profile

    Hadoop集群初始化

    在所有节点上启动zookeeper集群:

    zkServer.sh start

    在hadoop-namenode1上格式化zkfc:

    hdfs zkfc -formatZK

    启动journalnode(在namenode1,namenode2和datanode1上):

    hadoop-daemon.sh start journalnode

    格式化HDFS(在hadoop-namenode1上):

    hadoop namenode -format

    将格式化后namenode1节点hadoop工作目录中的元数据目录复制到namenode2节点

    scp-r /home/hadoop/apache/hadoop-2.6.0/data/namenode/* hadoop@hadoop-namenode2:/home/hadoop/apache/hadoop-2.6.0/data/namenode/ 

    启动Hadoop集群

    在hadoop-namenode1上启动dfs:

    start-dfs.sh

    start-dfs.sh命令会开启以下进程:

    namenode                        

    journalnode                         

    DFSZKFailoverController        

    datanode                   

    启动YARN(在namenode2上操作)

    start-yarn.sh

    启动YARN上的另一个ResourceManager

    yarn-daemon.sh start resourcemanager

    启动YARN的安全代理

    yarn-daemon.sh start proxyserver

    注:proxyserver充当防火墙的角色,提高访问集群的安全性

    启动YARN的历史任务服务

    mr-jobhistory-daemon.sh start historyserver

    至此,Hadoop集群安装配置完成。  

  • 相关阅读:
    mongodb 修改最大连接数
    js hook eval
    js hook ajax
    js hook cookie
    windows启动redis命令行
    springboot结合redis使用token实现登录注销功能
    springboot实现滑动验证码
    Java读取指定路径文件中的所有资源
    com.alibaba.fastjson.annotation.JSONField依赖
    springboot和session实现验证码功能
  • 原文地址:https://www.cnblogs.com/fangdai/p/6014546.html
Copyright © 2011-2022 走看看