Linux下配置Hadoop 高可用环境搭建

一、环境资源

JDK和Hadoop存在版本兼容问题,选择安装包的时候一定要考虑到两个软件的版本兼容,我这里选择的安装版本如下:

  • JDK1.8:https://pan.baidu.com/s/1Rm5ErmvKFjVmwx1uAF90vQ  提取码:kpre
  • Hadoop2.7:https://pan.baidu.com/s/1xynMsryyTDZBn_ApgbuTSA   提取码:ir1l 
  • zookeeper-3.4:https://pan.baidu.com/s/1SpIMlWfKgnxd3pL1PIu5IQ   提取码:0s3a 

二、服务器准备

本次环境配置共需要4台服务器,服务器之间相互可以Ping通,各个节点功能如下图:

三、检查四台服务器时间

要保证服务器之间的时间误差保持在几秒内,否则会造成某些角色进程不能正常启动

date   //查看服务器时间
date -s "2020-07-07 06:00:00"  //设置服务器时间

 四、为各个服务器分别设置别名

  • 打开配置文件
vi /etc/sysconfig/network   //打开network文件
  • 增加配置,别名可以根据需要设置,此处仅为示例 

  • 分别增加IP别名映射
vi /etc/hosts   //打开hosts文件
  • 增加映射配置 ,IP和别名之间的映射,要和network中的别名相对应

五、各个服务器分别禁用SELinux

vi /etc/sysconfig/selinux   //打开selinux文件
  • 将 SELINUX设置为disabled

六、各个服务器分别关闭防火墙 

systemctl stop firewalld.service   //停止firewall  
systemctl disable firewalld.service   //禁止firewall开机启动

七、分发秘钥文件

将NameNode(192.168.1.6、192.168.1.7)点公钥分发给其他服务器,实现NameNode(192.168.1.6、192.168.1.7)到其他角色服务器的SSH免密登陆

  •  生产NameNode(192.168.1.6/192.168.1.7)节点的秘钥文件
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa         //生成秘钥文件
  • 本地安装
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys   //本地安装秘钥
  • 各个节点分别登陆一下本地,以生成本机的.ssh文件目录
ssh localhost
  • 将NameNode(192.168.1.6)的公钥分别发送到192.168.1.7、192.168.1.8、192.168.1.9
cd ~/.ssh/   //切换到公钥所在目录
scp  id_dsa.pub  192.168.1.7:`pwd`/node606.pub  //将公钥发送到.7节点当前目录,并重命名公钥文件,以便区分是哪个服务器的公钥文件
  •  192.168.1.7、192.168.1.8、192.168.1.9分别安装接收到的公钥文件
cat ~/.ssh/node606.pub  >> ~/.ssh/authorized_keys   //安装公钥文件
  • 192.168.1.7和192.168.1.6操作步骤一样,此处不再重复

八、NameNode(192.168.1.6)安装JDK

  • 将Java安装文件上传到服务器上。
  • 将安装文件解压缩,并记录jdk解压文件根目录
tar -zxvf 文件名 解压目录  //解压到当前目录时,可以省略解压目录
  • 配置JDK环境变量,打开配置文件,在文件末尾加入JDK配置,配置内容如截图所示
vi /etc/profile

  • 刷新环境变量:输入命令,之间刷新
source /etc/profile
  • 输入 jps 命令,如果出现jdk进程信息,说明JDK环境配置成功

  • 通过scp命令将192.168.1.6)的JDK分别发送到192.168.1.7、192.168.1.8、192.168.1.9

九、192.168.1.6 安装配置Hadoop

  • 将Hadoop安装文件上传到服务器上
  • 将Hadoop安装文件解压,并记录下Hadoop的根目录
tar -zxvf 文件名 解压目录  //解压到当前目录时,可以省略解压目录
  • 配置Hadoop环境变量,在/etc/profile末尾加上对应的配置信息
vi /etc/profile

  • 配置Hadoop的Java环境变量:需要为Hadoop根目录下,ect/hadoop/下的hadoop-env.sh、mapred-env.sh、yarn-env.sh三个文件分别设置Java环境变量,将JAVA_HOME设置为我们安装的Java根目录
vi hadoop-env.sh
vi mapred-env.sh
vi yarn-env.sh

  • 配置core-site.xml,文件同样在Hadoop根目录下的ect/hadoop/目录中,需要在文件中,加入如下配置
vi core-site.xml
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://mycluster</value>    //mycluster  在hdfs-site.xml中定义的集群ID
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/var/hadoop/ha</value>   //临时存放目录
    </property>
    <property>
       <name>ha.zookeeper.quorum</name>   //定义ZooKeeper节点
       <value>192.168.1.7:2181,192.168.1.8:2181,192.168.1.9:2181</value>   
    </property>

 

  • 配置hdfs-site.xml,文件同样在Hadoop根目录下的ect/hadoop/目录中
vi hdfs-site.xml
    <property>
        <name>dfs.replication</name>    //备份数
        <value>2</value>
    </property>

    <property>
        <name>dfs.nameservices</name>
        <value>mycluster</value>   //集群ID
    </property>

    <property>
        <name>dfs.ha.namenodes.mycluster</name>   //nameNode ID
        <value>nn1,nn2</value>
    </property>

    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn1</name>  //nameNode 节点 rpc 信息
        <value>192.168.1.6:8020</value>
    </property>

    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn2</name>  //nameNode 节点 rpc 信息
        <value>192.168.1.7:8020</value>
    </property>

    <property> 
        <name>dfs.namenode.http-address.mycluster.nn1</name>  //nameNode 节点 http 信息
        <value>192.168.1.6:50070</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.mycluster.nn2</name>  //nameNode 节点 http 信息
        <value>192.168.1.7:50070</value>
    </property>

    <property>
       <name>dfs.namenode.shared.edits.dir</name>   //journalNode  主机信息
       <value>qjournal://192.168.1.6:8485;192.168.1.7:8485;192.168.1.8:8485/mycluster</value>
    </property>

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

    <property>
       <name>dfs.journalnode.edits.dir</name>   //journalNode 存放目录
       <value>/var/hadoop/ha/jn</value>
    </property>

    <property>
       <name>dfs.ha.fencing.methods</name>   //高可用验证方式
       <value>sshfence</value>
    </property>

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

    <property>
       <name>dfs.ha.automatic-failover.enabled</name>   //设置为自动切换NameNode
       <value>true</value>
    </property>

 

  • 配置slaves文件:将DataNode各节点IP写入文件中
vi slaves

十、将JDK和Hadoop、/etc/profile文件分发到其他服务器上

scp -r /usr/java/jdk1.8.0_172  192.168.1.7:/usr/java/  //要保证发送、接收目录存在
scp -r /usr/Hadoop/hadoop-2.7.3  192.168.1.7:/usr/Hadoop/  //要保证发送、接收目录存在
scp  /etc/profile  192.168.1.7:/etc/profile  //发送环境变量文件
source /etc/profile  //刷新环境变量信息

十一、安装配置Zookeeper

  • 将Zookeeper安装文件上传到 192.168.1.7 上。
  • 将安装文件解压缩,并记录Zookeeper解压文件根目录
tar -zxvf 文件名 解压目录  //解压到当前目录时,可以省略解压目录
  • 进入zookeeper安装目录,进入conf文件夹,将zoo_sample.cfg重命名zoo.cfg

  • 写入配置信息,修改数据存储位置,并写入zookeeper节点信息:节点信息中,需要为每一台参与到zookeeper集群中的节点指定编号,编号必须为数字;

  • 通过scpm命令,将zookeeper分发到191.168.1.8和191.168.1.9中;
  • 在192.168.1.7、192.168.1.8、192.168.1.9中,分别创建zookeeper的配置文件中,数据存放文件夹
mkdir -p /var/zookeeper
  • 在192.168.1.7、192.168.1.8、192.168.1.9 的数据目录下,分别创建myid文件,并写入配置文件中的编号,以标记该节点,需要注意的是,写入的数字,是配置文件中,节点的编号
echo 1  > /var/zookeeper/myid    // 1 是192.167.1.7 在zookeeper配置文件中的编号

  • 配置JDK环境变量(192.168.1.7、192.168.1.8、192.168.1.9 都需要加上zookeeper环境变量配置),打开配置文件,在文件末尾加入JDK配置,配置内容如截图所示
vi /etc/profile

  • 刷新环境变量:输入命令,直接刷新
source /etc/profile

十二、启动集群 

  • 启动zookeeper集群:在192.168.1.7、192.168.1.8、192.168.1.9中分别执行启动命令,启动zookeeper集群
zkServer.sh start
  • 启动journalNode:在192.168.1.6、192.168.1.7、192.168.1.8中分别执行启动命令
hadoop-daemon.sh start journalnode
  • 格式化hdfs:192.168.1.6(配置文件中的nameNode)节点上格式化,出现successfully表示格式化成功(每个Hadoop只需在第一次进行格式化)。
hdfs namenode -format

  • 启动格式化过的nameNode(192.168.1.6)节点
hadoop-daemon.sh start namenode
  • 将初始化的nameNode元数据信息,拷贝到另外一个nameNode节点,在192.168.1.7中,执行该命令
hdfs namenode -bootstrapStandby
  • 在zookeeper上,注册hdfs信息,在192.168.1.6节点上,执行下方命令
hdfs zkfc -formatZK
  • 启动集群:在192.168.1.6执行Hadoop启动命令。
 start-dfs.sh
  • 访问Hadoop:访问地址是    你的NameNodeIP:50070,出现这个页面,代表整个配置完成,如果出错,Hadoop会在根目录的log目录下生产日志文件,不同节点的日志,会存放在对应服务器上,可以根据日志,调整配置。

十三、后期使用启动顺序

高可用环境,在首次启动时,因为需要初始化各方功能,因此过程较为复杂,后续使用过程中,启动就更简单,具体步骤如下:

  • 启动 Zookeeper(仅需在其中一个NameNode节点启动即可)
zkServer.sh start
  • 启动Hadoop(仅需在其中一个NameNode节点启动即可)
 start-dfs.sh

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值