Hadoop-hdfs-ha 配置-搭建

需要软件:jdk、hadoop、zookeeper
在Hadoop-hdfs完全分布式环境搭建基础上,链接?Hadoop-hdfs-完全分布式-搭建
一、zokeeper集群搭建,四台虚拟机:node1,node2,node3,node4

  1. 将zookeeper.tar.gz上传到node2、node3、node4
  2. 解压:tar -zxf zookeeper-3.4.6.tar.gz -C /opt
  3. 配置环境变量
    • )export ZOOKEEPER_PREFIX=/opt/zookeeper-3.4.6
    • )export PATH=$ PATH: $ ZOOKEEPER_PREFIX/bin
    • ). /etc/profile让配置生效
  4. 在/opt/zookeeper-3.4.6/conf下
    • )cp zoo_sample.cfg zoo.cfg,复制
    • )编辑vi zoo.cfg
      • 添加
        在这里插入图片描述
      • 修改:dataDir=/var/bjsxt/zookeeper/data
  5. 创建:mkdir -p /var/bjsxt/zookeeper/data,该目录下放文件myid
    • )echo 1 > /var/bjsxt/zookeeper/data/myid
  6. 将/opt/zookeeper-3.4.6通过网络拷贝到node3、node4上
    • )scp -r zookeeper-3.4.6/ node3:/opt
    • )scp -r zookeeper-3.4.6/ node4:/opt
  7. 在node3和node4上分别创建/var/bjsxt/zookeeper/data目录
    • )node3:
    • )mkdir -p /var/bjsxt/zookeeper/data 和 echo 2 > /var/bjsxt/zookeeper/data/myid
    • )node4:
    • )mkdir -p /var/bjsxt/zookeeper/data 和 echo 3 > /var/bjsxt/zookeeper/data/myid
  8. 操作zookeeper:
    • )启动:zkServer.sh start,关闭:zkServer.sh stop
    • )连接:zkCli.sh,退出连接:quit

二、hadoop配置

  1. 配置vi hadoop-env.sh,修改jdk运行路径:export JAVA_HOME=${JAVA_HOME}改为export JAVA_HOME=/usr/java/default
  2. 配置vi core-site.xml
<configuration>
    <!-- 用于解析fs.defaultFS中hdfs://mycluster中的mycluster地址  -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://mycluster</value>
    </property>
    <!-- 指定Hadoop运行时产生文件的存储目录: NameNode和DataNode -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/var/bjsxt/hadoop/ha</value>
    </property>

    <!-- 指定每个zookeeper服务器的位置和客户端端口号 -->
	<property>
		 <name>ha.zookeeper.quorum</name>
		 <value>node2:2181,node3:2181,node4:2181</value>
	</property>
	
<configuration>
  1. 配置vi hdfs-site.xml
<configuration>
	<!-- 指定block默认副本个数 -->
	<property>
		<name>dfs.replication</name>
		<value>2</value>
	</property>
	
    <!-- 分布式集群逻辑名称 -->
    <property>
        <name>dfs.nameservices</name>
        <value>mycluster</value>
    </property>

    <!-- mycluster下面由两个namenode服务支撑  -->
    <property>
        <name>dfs.ha.namenodes.mycluster</name>
        <value>nn1,nn2</value>
    </property>

    <!-- 指定nn1,nn2的地址和端口号,发布的是一个hdfs://的服务  -->
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn1</name>
        <value>node1:8020</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn2</name>
        <value>node2:8020</value>
    </property>

	 <!--指定三台journal服务器的地址-->
	  <property>
		<name>dfs.namenode.shared.edits.dir</name>
		<value>qjournal://node1:8485;node2:8485;node3:8485/mycluster</value>
	  </property>

    <!-- 指定客户端查找active的namenode的策略:
	  会给所有namenode发请求,以决定哪个是active的 -->
	  <property>
		<name>dfs.client.failover.proxy.provider.mycluster</name>
		<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
	  </property>
   
     <!--在发生故障切换的时候,ssh到对方服务器,将namenode进程kill掉  kill -9  55767-->
	<property>
		  <name>dfs.ha.fencing.methods</name>
		  <value>sshfence</value>
	</property>

	<!-- 使用隔离机制时需要ssh无秘钥登录 -->
	<property>
		  <name>dfs.ha.fencing.ssh.private-key-files</name>
		  <value>/root/.ssh/id_dsa</value>
	</property>
	<!-- 指定journalnode在哪个目录存放edits log文件 -->
	<property>
		<name>dfs.journalnode.edits.dir</name>
		<value>/var/bjsxt/hadoop/ha/jnn</value>
	</property>
	
	<!--启用自动故障切换-->
	<property>
	   <name>dfs.ha.automatic-failover.enabled</name>
	   <value>true</value>
	 </property>
</configuration>

三、启动和关闭

  1. 可以先启动zookeeper:zkServer.sh start,也可以在namenode同步数据后,准备启动ZKFC之前,用ZFKC格式化zookeeper:hdfs zkfc -formatZK
  2. 在node1\node2\node3上启动三台journalnode
    • hadoop-daemon.sh start journalnode
  3. 任意选择node1或者node2,格式化HDFS
    • hdfs namenode -format,格式化后,启动namenode进程
    • hadoop-daemon.sh start namenode
  4. 在另一台node2或者node1上同步元数据
    • hdfs namenode -bootstrapStandby
  5. 初始化zookeeper上的内容
    • hdfs zkfc -formatZK
  6. 启动hadoop集群,可在node1到node4这四台服务器上任意位置执行
    • start-dfs.sh
  7. kill -9 进程号(jps查询java程序)停止进程
    • hadoop-daemon.sh start namenode,启动namenode
    • hadoop-daemon.sh start zkfc,启动ZKFC
  8. zookeeper操作
    • 在node2或者node3或者node4上运行:zkCli.sh
    • ls /hadoop-ha/mycluster 查看临时文件
    • get /hadoop-ha/mycluster/ActiveStandbyElectorLock 查看临时文件的内容
    • 退出zkCli.sh,使用quit
    • 停止集群
      • 首先:stop-dfs.sh
      • 其次,停止zookeeper集群,node2、node3、node4上执行:
        zkServer.sh stop

四、

你可能感兴趣的:(大数据,Linux系统)