hadoop-2.x高可用集群搭架

一、规划

1、硬件资源

ip6:centos-node6
ip7:centos-node7
ip8:centos-node8
ip9:centos-node9

2、配置环境变量:

export JAVA_HOME=/usr/local/java/jdk1.7.0_79
export PATH=.:$JAVA_HOME/bin:$PATH

二、环境配置

1、修改/etc/hosts

ip6:centos-node6
ip7:centos-node7
ip8:centos-node8
ip9:centos-node9

2、免密码登录

生成私钥【4台机器上均要执行】
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 
生成免密码登陆文件【4台机器上均要执行】
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
然后,将id_dsa.pub拷贝到 centos-node7,centos-node8,centos-node9
的~/root/目录下
scp ~/.ssh/id_dsa.pub root@centos-node7:~/root  
scp ~/.ssh/id_dsa.pub root@centos-node8:~/root
scp ~/.ssh/id_dsa.pub root@centos-node9:~/root
将id_dsa.pub重写到 authorized_keys 在当前/root/目录下执行命令:
cat id_dsa.pub >> ~/.ssh/authorized_keys
测试登陆 ssh centos-node7,centos-node8,centos-node9

三、Hadoop-2.x HDFS 高可用分布图

hadoop-2.x高可用集群搭架_第1张图片

hadoop-2.x 配置在服务器节点位置

hadoop-2.x高可用集群搭架_第2张图片

四、hadoop-2.x配置

下载hadoop-2.5.1.tar.gz

http://apache.fayea.com/hadoop/common/

并将其解压到/usr/local/hadoop-2.5.1.下,执行命令:

tar -zxvf hadoop-2.5.1.tar.gz -C /usr/local/

1、修改配置文件 /usr/local/hadoop-2.5.1/etc/hadoop/

hadoop-env.sh

export JAVA_HOME=/usr/local/java/jdk1.7.0_79

hdfs-site.xml

//配置一个命名服务bjsxt
<property>
  <name>dfs.nameservicesname>
  <value>bjsxtvalue>
property>
//NameNode命名
<property>
  <name>dfs.ha.namenodes.bjsxtname>
  <value>nn1,nn2value>
property>
//配置两个NameNode的RPC协议主机名和端口
<property>
  <name>dfs.namenode.rpc-address.bjsxt.nn1name>
  <value>centos-node6:8020value>
property>
<property>
  <name>dfs.namenode.rpc-address.bjsxt.nn2name>
  <value>centos-node7:8020value>
property>
//两个NameNode的http协议的主机名和端口
<property>
  <name>dfs.namenode.http-address.bjsxt.nn1name>
  <value>centos-node6:50070value>
property>
<property>
  <name>dfs.namenode.http-address.bjsxt.nn2name>
  <value>centos-node7:50070value>
property>
//配置(原文件)JournalNode的服务器名和端口
<property>
  <name>dfs.namenode.shared.edits.dirname>
  <value>qjournal://centos-node7:8485;centos-node8:8485;centos-node9:8485/bjsxtvalue>
property>

//配置客户端提供的java类,将使用DFS客户机找到哪些NameNode是活跃的Active
<property>
 <name>dfs.client.failover.proxy.provider.bjsxtname>
 <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvidervalue>
property>
//配置sshfence指定私钥的路径
<property>
  <name>dfs.ha.fencing.methodsname>
  <value>sshfencevalue>
property>
//指定私钥的路径
<property>
  <name>dfs.ha.fencing.ssh.private-key-filesname>
  <value>/root/.ssh/id_dsavalue>
property>

//JournalNode 的工作目录
<property>
  <name>dfs.journalnode.edits.dirname>
  <value>/opt/jn/datavalue>
property>

//配置开启故障自动切换
<property>
   <name>dfs.ha.automatic-failover.enabledname>
   <value>truevalue>
 property>

core-site.xml

//配置集群名称 bjsxt
<property>
  <name>fs.defaultFSname>
  <value>hdfs://bjsxtvalue>
property>
//配置zookeeper集群服务器节点
<property>
   <name>ha.zookeeper.quorumname>
   <value>centos-node6:2181,centos-node7:2181,centos-node8:2181value>
property>
//修改hadoop默认工作目录
<property>
  <name>hadoop.tmp.dirname>
  <value>/opt/hadoop-2.5.1value>
property>

slaves

//配置DataNode的节点服务器
centos-node7
centos-node8
centos-node9

五、zookeeper安装配置

下载地址:http://apache.fayea.com/zookeeper/

下载 zookeeper-3.4.6.tar.gz,上传到centos-node6服务器上,解压:

tar -zxvf zookeeper-3.4.6.tar.gz -C /usr/local

修改配置文件,cd /usr/zookeeper-3.4.6/conf 执行命令

cp zoo_sample.cfg zoo.cfg

修改zoo.cfg

//修改地址
dataDir=/opt/zookeeper
//添加集群节点服务
server.1=centos-node6:2888:3888
server.2=centos-node7:2888:3888
server.3=centos-node8:2888:3888

在/opt/zookeeper 目录下创建文件myid, 修改 myid

vi /opt/zookeeper/myid
//编辑内容
1 

将 opt/zookeeper文件夹拷贝到centos-node7,centos-node8 (因为我们有三台zookeep服务节点) 命令:

scp -r zookeeper/ root@centos-node7:/opt
scp -r zookeeper/ root@centos-node8:/opt

将 centos-node7 服务器目录 /opt/zookeeper 下myid 文件编辑内容为:2
将 centos-node8 服务器目录 /opt/zookeeper 下myid 文件编辑内容为:3

同时拷贝centos-node6 上的zookeeper 到centos-node7,centos-node8服务器上

scp -r /usr/local/zookeeper-3.4.6 root@centos-node7:/usr/local
scp -r /usr/local/zookeeper-3.4.6 root@centos-node8:/usr/local

1、配置zookeeper环境变量

vi /etc/profile
export JAVA_HOME=/usr/local/java/jdk1.7.0_79
export ZK_HOME=/usr/local/zookeeper-3.4.6
export PATH=.:$JAVA_HOME/bin:$ZK_HOME/bin:$PATH

环境变量 立即生效

source /etc/profile

同时拷贝centos-node6 上的/etc/profile文件 到centos-node7,centos-node8服务器上的 /etc/目录下 ,在centos-node7,centos-node8 分别执行 source /etc/profile ,立即生效

启动zookeeper 执行命令:

zkServer.sh start 

hadoop-2.x高可用集群搭架_第3张图片

现在 服务器centos-node6 hadoop 配置完成了,需要拷贝到centos-node7,centos-node8,centos-node9,服务器上:

将 hadoop-2.5.1.tar.gz 拷贝到centos-node7,centos-node8,centos-node9,服务器上,分别解压到 /usr/local 目录下面:

tar -zxvf hadoop-2.5.1.tar.gz -C /usr/local

拷贝服务器 centos-node6 的 /usr/local/hadoop -2.5.1/etc/haoop/所有文件 拷贝到
centos-node7,centos-node8,centos-node9服务器上的 /usr/local/hadoop -2.5.1/etc/haoop/中。(保持配置文件一致)

//usr/local/hadoop -2.5.1/etc/haoop/当前目录下拷贝

scp ./* root@centos-node7:/usr/local/hadoop-2.5.1/etc/hadoop/
scp ./* root@centos-node8:/usr/local/hadoop-2.5.1/etc/hadoop/
scp ./* root@centos-node9:/usr/local/hadoop-2.5.1/etc/hadoop/

备注:关闭防火墙:centos-7关闭防火墙:systemctl stop firewalld

启动:JN (journalnode) ,在配置有JD服务器上启动

./hadoop-daemon.sh start journalnode

hadoop-2.x高可用集群搭架_第4张图片

运行(hdfs namenode -format)格式化,在其中一台NameNode上进行格式化,在hadoop/bin/目录下执行命令:

./hdfs namenode -format

hadoop-2.x高可用集群搭架_第5张图片

初始化完成 会生成 hdfs 文件目录

hadoop-2.x高可用集群搭架_第6张图片

现在服务器 centos-node6 上NameNode 以格式化,HDFS 目录已生成,然而第二个centos-node7上的NameNode未格式化, HDFS目录未生成,

这时候我们必须启动 centos-node6 的NameNode,执行一下命令:

./hadoop-daemon.sh start namenode

hadoop-2.x高可用集群搭架_第7张图片

然后 在未格式化(centos-node7)的 NameNode 上执行次命令:

./hdfs namenode -bootstrapStandby

hadoop-2.x高可用集群搭架_第8张图片

现在我们就可以 初始化 ZKFC 在其中一个NameNode 上执行(三台zookeeper同时启动的情况) 命令:

./hdfs zkfc -formatZK

hadoop-2.x高可用集群搭架_第9张图片

启动dfs,查看jps 执行命令:

./start-dfs.sh

hadoop-2.x高可用集群搭架_第10张图片

浏览器访问:http://centos-node6:50070

hadoop-2.x高可用集群搭架_第11张图片

接下来我们配置 ResourceManager 和 DataManager

修改配置文件 mapred-site.xml.template 执行命令:

cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
//添加yarn
<property>
  <name>mapreduce.framework.namename>
  <value>yarnvalue>
property>

修改配置文件 yarn-site.xml 执行命令:

    //centos-node6服务器作为服务节点
    <property>
        <name>yarn.resourcemanager.hostnamename>
        <value>centos-node6value>
    property>
    <property>
        <name>yarn.nodemanager.aux-servicesname>
        <value>mapreduce_shufflevalue>
    property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce_shuffle.classname>
        <value>org.apache.hadoop.mapred.ShuffleHandlervalue>
    property>

拷贝 mapred-site.xml yarn-site.xml 到centos-node7,centos-node8,centos-node9 服务器上/hadoop-2.5.1/etc/hadoop/目录下。

启动所有服务:首先启动所有节点的zookeeper服务

./start-all.sh

hadoop-2.x高可用集群搭架_第12张图片

查看centos-node7上的进程:jps

hadoop-2.x高可用集群搭架_第13张图片

查看centos-node8上的进程:jps

hadoop-2.x高可用集群搭架_第14张图片

查看centos-node9上的进程:jps

hadoop-2.x高可用集群搭架_第15张图片

浏览器访问 ResourceManager http://centos-node6:8088

hadoop-2.x高可用集群搭架_第16张图片

hadoop-2.x高可用集群搭架 配置完成

你可能感兴趣的:(hadoop,集群,hadoop,高可用)