其他分享
首页 > 其他分享> > Hadoop高可用搭建部署测试

Hadoop高可用搭建部署测试

作者:互联网

同步时间

date -s "2019-8-22 09:36:15"

实现从机到主机之间互相通信

ssh免密钥(本机生成)

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

分发密钥到主机(并重命名区分 避免覆盖)

scp id_dsa.pub bigdata01:`pwd`/bigdata02.pub

主机把从机发送的bigdata02的公钥追加到认证文件里:

cat ~/.ssh/bigdata02.pub >> ~/.ssh/authorized_keys

修改hdfs.xml,删除原先的SecondNamenode配置,增加以下

<property>

  <name>dfs.nameservices</name>

  <value>mycluster</value>

</property>

 

<property>

  <name>dfs.ha.namenodes.mycluster</name>

  <value>nn1,nn2</value>

</property>

 

<property>

  <name>dfs.namenode.rpc-address.mycluster.nn1</name>

  <value>bigdata01:8020</value>

</property>

<property>

  <name>dfs.namenode.rpc-address.mycluster.nn2</name>

  <value>bigdata02:8020</value>

</property>

<property>

  <name>dfs.namenode.http-address.mycluster.nn1</name>

  <value>bigdata01:50070</value>

</property>

<property>

  <name>dfs.namenode.http-address.mycluster.nn2</name>

  <value>bigdata02:50070</value>

</property>

<!--日志共享-->

<property>

  <name>dfs.namenode.shared.edits.dir</name>

  <value>qjournal://bigdata01:8485;bigdata02:8485;bigdata03: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.ha.fencing.methods</name>

      <value>sshfence</value>

    </property>

 

 

    <property>

      <name>dfs.ha.fencing.ssh.private-key-files</name>

      <value>/root/.ssh/id_dsa</value>

    </property>

<property>

   <name>dfs.journalnode.edits.dir</name>

   <value>/opt/modules/hadoop-2.6.5/ha/journalnode</value>

</property>

 

<property>

   <name>dfs.ha.automatic-failover.enabled</name>

   <value>true</value>

</property>

修改core-site.xml配置

<property>

    <name>fs.defaultFS</name>

    <value>hdfs://mycluster</value>

</property>

增加

<property>

   <name>hadoop.tmp.dir</name>

   <value>/opt/modules/hadoop-2.6.5/ha</value>

</property>

<property>

   <name>ha.zookeeper.quorum</name>

   <value>bigdata02:2181,bigdata03:2181,bigdata04:2181</value>

</property>

分发hdfs-site.xml和core-site.xml给其他节点

scp core-site.xml hdfs-site.xml bigdata02:`pwd`

在2\3\4datanode中添加zookeeper包

tar -zxvf zookeeper-3.4.6.tar.gz -C /opt/modules/

进入zookeeper修改conf配置文件

mv zoo_sample.cfg zoo.cfg

修改

dataDir=/opt/modules/zookeeper

增加

server.1=bigdata02:2888:3888

server.2=bigdata03:2888:3888

server.3=bigdata04:2888:3888

分发zookeeper给其他节点

scp -r zookeeper-3.4.6/ bigdata03:`pwd`

给三台节点新建文件夹

mkdir -p /opt/modules/zookeeper

添加可识别myid,每台机字数字不一样 代表编号

echo 1 > /opt/modules/zookeeper/myid

配置环境变量

vi /etc/profile

export ZOOKEEPER_HOME=/opt/modules/zookeeper-3.4.6

PATH=$PATH:$ZOOKEEPER_HOME/bin

分发/etc/profile给其他节点

scp /etc/profile bigdata03:/etc/

source /etc/profile

启动zookeeper

zkServer.sh start

开启的机子中,编号大的为leader,其余为follower

1\2\3台机启动journalnode(同步数据)

hadoop-daemon.sh start journalnode

主namenode节点格式化:

hdfs namenode -format

启动格式化后的主节点:

hadoop-daemon.sh start namenode

把主节点的信息拷贝到当前节点的信息(journalnode要启动):

hdfs namenode -bootstrapStandby

同步成功,会发现同步另一个nn节点的clusterID 不是秘钥分发,而是同步过来的

格式化zkfc,在zookeeper中可见目录创建 :

hdfs zkfc -formatZK

进入zookeeper客户端:

zkCli.sh

启动hdfs集群:

start-dfs.sh

手动把nn1设置为active

$ bin/hdfs haadmin -transitionToActive nn1

上传文件到nn1,然后将nn1切换为Standby

将nn2切换为Active,然后查看HDFS文件

手动切换回standby:

$ bin/hdfs haadmin -transitionToStandby nn1

注意:但是在DFSZKFailoverController的监控下,无法执行,需要停止之后才可以执行

 

爬坑经历:DFSZKFailoverController好多次都没有起来,在配置的时候注意要顶格写,最好在linux下直接编写,不要通过notepad进行。tab不可以用s多个空格替代。

 

 

集群启动顺序:zkServer.sh start  ---> start-dfs.sh

 

 

标签:hdfs,zookeeper,Hadoop,dfs,bigdata02,ssh,测试,namenode,搭建
来源: https://blog.csdn.net/CSDN_XUWENHAO/article/details/101113387