Hadoop-HA配置详细步骤

1. HA服务器配置

对hdfs做高可用

1.1服务器详情

服务器:centos7

Hadoop:2.6.5

Jdk:1.8

共四台服务器

192.168.1.111 node1

192.168.1.112 node2

192.168.1.113 node3

192.168.1.114 node4

在每台服务器的/etc/hosts文件中添加上边四行内容

服务器分配


NN


DN


ZK


ZKFC


JN


RM


DM


Node1


1


1


1


1


Node2


1


1


1


1


1


1


Node3


1


1


1


1


Node4


1


1


1

Journalnode:需要为奇数个

Zookeeper:需要为奇数个

ZKFS和NN在同台服务器

DM和DN保持一致。

1.2配置免密登录

  • 在每台服务器分别生成各自的公钥私钥

  命令如下

  ssh-keygen –t rsa –P ‘’ –f  ~/.ssh/id_rsa

  此时查看 ~/.ssh目录下,会有两个文件,id_rsa(私钥)、id_rsa.pub(公钥)

  • 将id_rsa.pub文件内容拼接到每台服务器的~/.ssh/authorized_keys文件

  命令如下

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

  每台服务器都需要拼接四次,包括本节点及其它三个节点的,配置完成后,即可免密登录其它节点

1.3Hadoop配置

此处使用的hadoop版本为2.6.5

1.3.1  hadoop-env.sh

编辑/etc/hadoop/hadoop-env.sh文件

找到JAVA_HOME配置位置,修改JAVA_HOME如下

export JAVA_HOME= /home/java/jdk1.8.0_144

1.3.2 hdfs-site.xml(/etc/hadoop/hdfs-site.xml)

  • 配置nameservice
<property>
  <name>dfs.nameservices</name>
  <value>mycluster</value>
</property>
  • 再配置所有namenode的名字 
<property>
  <name>dfs.ha.namenodes.mycluster</name>
  <value>nn1,nn2</value>
</property>

注意:此处的mycluster和上边指定的服务名一致,nn1 nn2位两个namenode名称

  • 配置RPC协议的端口,两个namenode都要配置
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  <value>machine1.example.com:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn2</name>
  <value>machine2.example.com:8020</value>
</property>
  • 配置HTTP协议的端口和主机
<property>
  <name>dfs.namenode.http-address.mycluster.nn1</name>
  <value>node1:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn2</name>
  <value>node2:50070</value>
</property>
  • 配置journalnode
<!-- 配置journalnode -->

<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://node2:8485;node3:8485;node4:8485/mycluster</value>
</property>

注意:此处的mycluster需要和服务名一样

  • 配置ConfiguredFailoverProxyProvider类,HDFS通过这个类来找到active的namenode
<property>
  <name>dfs.client.failover.proxy.provider.mycluster</name>
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
  • 配置ssh fencing
<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_rsa</value>
</property>
  • 配置journalnode的工作目录
<!--配置journalnode的工作目录-->
<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/opt/journalnode/data</value>
</property>
  • 开启自动切换(可选),手动切换也可用
<!--开启自动切换(可选)-->
<property>
   <name>dfs.ha.automatic-failover.enabled</name>
   <value>true</value>
 </property>

1.3.3 core-site.xml

  • 配置namenode入口
<!--配置namenode入口-->
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://mycluster</value>
</property>

注意:此处的mycluster需要和hdfs-site.xml文件中的nameservice名称一致

  • 配置zookeeper的集群,zookeeper所在的节点
<!--配置zookeeper的集群-->
<property>
   <name>ha.zookeeper.quorum</name>
   <value>node1:2181,node2:2181,node3:2181</value>
 </property>
  • 配置工作目录hadoop.tmp.dir  默认是在系统的临时目录下/tmp
<!--配置hadoop的工作目录,默认在系统的临时目录下/tmp-->
<property>
   <name>hadoop.tmp.dir </name>
   <value>/opt/hadoop2</value>
 </property> 

1.3.4 slaves配置datanode

node2

node3

node4

不需要配master了,因为没有secondarynamenode,journalnode替代了它

2启动hdfs

  • 先将zookeeper启动起来 ./zkServer.sh start
  • 必须先启动journalnode

  需要在node2、3、4启动journalnode

  命令 ./hadoop-daemon.sh start  journalnode

  • 在任意一个namenode上格式化

  在node1上格式化namenode

  ./hdfs namenode –format

  注意centos关闭防火墙一定要用systemctl stop firewalld

  格式化后,在/opt/hadoop2下就会有元数据文件了

  • 将node1上的元数据文件拷贝到node2中

    • 必须先启动node1中的namenode

      ./hadoop-daemon.sh start namenode

    • 在没有格式化namenode的节点上(node2)上执行命令

      ./hdfs namenode –bootstrapStandby

    命令成功执行后,在/opt/hadoop2/下就会有元数据文件了

  • 格式化zk,在任意一台namenode节点上
  hdfs zkfc -formatZK
  • 停止hdfs

  ./stop-dfs.sh

  会停止除了zookeeper之外的所有进程

  • 启动hdfs

  ./start-dfs.sh

[[email protected] sbin]# ./start-dfs.sh

Starting namenodes on [node1 node2]

node2: starting namenode, logging to /home/hadoop/hadoop-2.6.5/logs/hadoop-root-namenode-node2.out

node1: starting namenode, logging to /home/hadoop/hadoop-2.6.5/logs/hadoop-root-namenode-node1.out

node4: starting datanode, logging to /home/hadoop/hadoop-2.6.5/logs/hadoop-root-datanode-node4.out

node3: starting datanode, logging to /home/hadoop/hadoop-2.6.5/logs/hadoop-root-datanode-localhost.out

node2: starting datanode, logging to /home/hadoop/hadoop-2.6.5/logs/hadoop-root-datanode-node2.out

Starting journal nodes [node2 node3 node4]

node4: starting journalnode, logging to /home/hadoop/hadoop-2.6.5/logs/hadoop-root-journalnode-node4.out

node3: starting journalnode, logging to /home/hadoop/hadoop-2.6.5/logs/hadoop-root-journalnode-localhost.out

node2: starting journalnode, logging to /home/hadoop/hadoop-2.6.5/logs/hadoop-root-journalnode-node2.out

Starting ZK Failover Controllers on NN hosts [node1 node2]

node2: starting zkfc, logging to /home/hadoop/hadoop-2.6.5/logs/hadoop-root-zkfc-node2.out

node1: starting zkfc, logging to /home/hadoop/hadoop-2.6.5/logs/hadoop-root-zkfc-node1.out

[[email protected] sbin]# jps

5234 Jps

5188 DFSZKFailoverController

3302 QuorumPeerMain

4920 NameNode
  • 启动成功

  http://192.168.1.111:50070/

  http://192.168.1.112:50070/

会发现有一个是active  一个是standby

  • 测试

  在hdfs新建一个路径,上传文件

  ./hdfs dfs -mkdir -p /usr/file

  ./hdfs dfs -put /home/java/jdk-8u144-linux-x64.tar.gz /usr/file/

3.配置mapreduce

3.1 mapred-site.xml

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

3.2 yarn-site.xml

<!--resourcemanager在哪台服务器上-->
<property>
         <name>yarn.resourcemanager.hostname</name>
         <value>node1</value>
</property>
<property>
         <name>yarn.nodemanager.aux-services</name>
         <value>mapreduce_shuffle</value>
</property>
<property>
         <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
         <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>

4.全面启动

  • 需要先将hdfs停掉

  在node1上./stop-dfs.sh

  • 全面启动

  Node1上 ./start-all.sh

jps查看进程

[[email protected] sbin]# jps

6977 NameNode

7603 Jps

3302 QuorumPeerMain

7244 DFSZKFailoverController

7327 ResourceManager

启动成功。

时间: 2024-11-10 14:44:02

Hadoop-HA配置详细步骤的相关文章

Nginx+php-fpm环境配置详细步骤

   Nginx+php-fpm环境配置详细步骤 最全的Nginx各种版本下载地址:http://nginx.org/download/ 一.编译安装php-fpm 什么是PHP-FPM PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在 http://php-fpm.org/download下载得到. PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中.必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用. 新版PH

使用IDEA创建javaweb项目并配置详细步骤+导出war包详细步骤

参考 使用IDEA创建javaweb项目并配置详细步骤+导出war包详细步骤 原文地址:https://www.cnblogs.com/slbb/p/9360344.html

Apollo 配置详细步骤(Windows环境)

一. 准备工作 1.下载 apollo 安装包 下载链接:http://activemq.apache.org/apollo/download.html 2.下载 java JDK 安装包 ( apollo 依赖 java 环境) 下载链接:http://www.oracle.com/technetwork/java/javase/downloads/index.html 3.安装 java JDK 4.解压 apollo 安装包(免安装,自己选择路径,我这里解压在D盘) 注:如果你的操作系统是

CentOS Hadoop安装配置详细

总体思路,准备主从服务器,配置主服务器可以无密码SSH登录从服务器,解压安装JDK,解压安装Hadoop,配置hdfs.mapreduce等主从关系. 1.环境,3台CentOS7,64位,Hadoop2.7.3需要64位Linux,CentOS7 Minimal的ISO文件只有600M,操作系统十几分钟就可以安装完成,Master 192.168.6.220 Slave1 192.168.6.221 Slave2 192.168.6.222 2.SSH免密码登录,因为Hadoop需要通过SSH

xampp安装配置详细步骤

一个优秀的士兵要有自己称心的武器,一个合格的前端开发要有自己开发编写代码的电脑环境.接下来为大家推荐一款强大的集成软件,不用再分步安装配置数据库服务器等.xampp软件集成了Apache服务器和Mysql数据库等,一键安装,稍加配置就能给你一个称心如意的开发环境. 第一步:下载xampp软件 可以去百度搜索xampp,可以找到很多安装包 我比较喜欢这个版本的xampp v3.1.0,现在提供给大家 链接:http://pan.baidu.com/s/1i41ud8p 密码:y8jc 接下来就是普

WebRTC AppRTC(一)环境配置详细步骤与坑总结

弄webrtc确实不是很好弄,目前仅调通了pc端的网页与手机端网页的视频.不过感觉还有些问题1.两者都必须要使用火狐浏览器2.感觉pc端摄像头拍出来的画面还可以,手机端稍微有点花3.进入房间接通后过一段时间才显示两个视频画面~~~~apprtc的demo还没有调通,问题出在turnserver,后面弄好了再发文章.网上有很多关于apprtc的搭建的步骤,有的详细有的不详细,不管怎样中间还是有很多的坑. (ps:这图片画风越看越诡异) 之前是按照这篇文章配置的,也给大家作为参考.步骤我还会再写一遍

Android Studio 安装配置详细步骤及使用的基本操作

前言 可能大家对Android Studio已经不是很陌生了,是Google针对Android开发推出的新的开发工具,目前很多开源项目都已经在采用,Google的更新速度也很快,明显能感觉到这是Android开发的未来,那么我们还有什么理由不去拥抱未来呢? 这篇文章是对这期间我是用Android Studio的一个基本的总结,包括首次安装和配置等.由于我也是和广发Android开发者一样,一直使用的Eclipse+ADT+SDK环境,已经习惯了原有的方式,可能不太喜欢接收这个新鲜的工具,但是之前

Android Studio 安装配置详细步骤,以及使用的基本操作

可能大家对Android Studio已经不是很陌生了,是Google针对Android开发推出的新的开发工具,目前很多开源项目都已经在采用,Google的更新速度也很快,明显能感觉到这是Android开发的未来,那么我们还有什么理由不去拥抱未来呢? 这篇文章是对这期间我是用Android Studio的一个基本的总结,包括首次安装和配置等.由于我也是和广发Android开发者一样,一直使用的Eclipse+ADT+SDK环境,已经习惯了原有的方式,可能不太喜欢接收这个新鲜的工具,但是之前看网上

Oracle Stream配置详细步骤

1 引言 Oracle Stream功能是为提高数据库的高可用性而设计的,在Oracle 9i及之前的版本这个功能被称为Advance Replication.Oracle Stream利用高级队列技术,通过解析归档日志,将归档日志解析成DDL及DML语句,从而实现数据库之间的同步.这种技术可以将整个数据库.数据库中的对象复制到另一数据库中,通过使用Stream的技术,对归档日志的挖掘,可以在对主系统没有任何压力的情况下,实现对数据库对象级甚至整个数据库的同步. 解析归档日志这种技术现在应用的比