专栏首页生如夏花的个人博客hadoop搭建完全分布式集群

hadoop搭建完全分布式集群

hadoop搭建完全分布式集群

写在之前

已经安装好zookeeper集群 已经安装好jdk,并配置好了环境变量 准备三台机器(最小集群)

hadoop节点配置

hadoop1 zookeeper NameNode (active) Resourcemanager (active) DataNode NodeManager JournalNode

hadoop2 zookeeper NameNode (standby) Resourcemanager (standby) DataNode NodeManager JournalNode

hadoop3 zookeeper DataNode NodeManager JournalNode

安装

永久关闭防火墙 6

执行:service iptables stop 再次执行:chkconfig iptables off

为每台机器配置主机名以及hosts文件

vim /etc/sysconfig/network

然后执行 hostname 主机名=“主机名” 达到不重启生效目的

host文件示例

192.168.234.21 hadoop01 192.168.234.22 hadoop02 192.168.234.23 hadoop03 192.168.234.24 hadoop04 192.168.234.25 hadoop05 192.168.234.26 hadoop06

将配置好的host文件远程复制到其他机器

scp /etc/hosts root@ip:/etc

为每台机器配置ssh免秘钥登录

执行:ssh-keygen ssh-copy-id root@hadoop1 (分别发送到3台节点上) 具体centos集群下的ssh免密登录

安装和配置01节点的hadoop

配置hadoop-env.sh 进入hadoop安装目录下的etc/hadoop目录 vim hadoop-env.sh 配置jdk安装所在目录 配置hadoop配置文件所在目录

配置core-site.xml
<configuration>
<!--用来指定hdfs的老大,ns为固定属性名,表示两个namenode-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns</value>
</property>
<!--用来指定hadoop运行时产生文件的存放目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/software/hadoop-2.7.1/tmp</value>
</property>
<!--执行zookeeper地址-->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
</configuration>
配置01节点的hdfs-site.xml
<configuration>
<!--执行hdfs的nameservice为ns,和core-site.xml保持一致-->
<property>
<name>dfs.nameservices</name>
<value>ns</value>
</property>
<!--ns下有两个namenode,分别是nn1,nn2-->
<property>
<name>dfs.ha.namenodes.ns</name>
<value>nn1,nn2</value>
</property>
<!--nn1的RPC通信地址-->
<property>
<name>dfs.namenode.rpc-address.ns.nn1</name>
<value>hadoop01:9000</value>
</property>
<!--nn1的http通信地址-->
<property>
<name>dfs.namenode.http-address.ns.nn1</name>
<value>hadoop01:50070</value>
</property>
<!--nn2的RPC通信地址-->
<property>
<name>dfs.namenode.rpc-address.ns.nn2</name>
<value>hadoop02:9000</value>
</property>
<!--nn2的http通信地址-->
<property>
<name>dfs.namenode.http-address.ns.nn2</name>
<value>hadoop02:50070</value>
</property>
<!--指定namenode的元数据在JournalNode上的存放位置,这样,namenode2可以从jn集群里获取
     最新的namenode的信息,达到热备的效果-->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/ns</value>
</property>
<!--指定JournalNode存放数据的位置-->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/software/hadoop-2.7.1/journal</value>
</property>
<!--开启namenode故障时自动切换-->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!--配置切换的实现方式-->
<property>
<name>dfs.client.failover.proxy.provider.ns</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!--配置隔离机制-->
<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_rsa</value>
</property>
 
<!--配置namenode数据存放的位置,可以不配置,如果不配置,默认用的是
     core-site.xml里配置的hadoop.tmp.dir的路径-->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///home/software/hadoop-2.7.1/tmp/namenode</value>
</property>
<!--配置datanode数据存放的位置,可以不配置,如果不配置,默认用的是
          core-site.xml里配置的hadoop.tmp.dir的路径-->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///home/software/hadoop-2.7.1/tmp/datanode</value>
</property>
 
<!--配置block副本数量-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--设置hdfs的操作权限,false表示任何用户都可以在hdfs上操作文件-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
 
</configuration>
配置mapred-site.xml
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
配置yarn-site.xml
<configuration>
 <!-- 开启YARN HA --> 
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
 
  <!-- 指定两个resourcemanager的名称 --> 
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
 
<!-- 配置rm1,rm2的主机 --> 
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>hadoop01</value>
</property>
 
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>hadoop03</value>
</property>
 
<!--开启yarn恢复机制-->
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
 
<!--执行rm恢复机制实现类-->
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
 
<!-- 配置zookeeper的地址 -->  
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
<description>For multiple zk services, separate them with comma</description>
</property>
 
<!-- 指定YARN HA的名称 -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yarn-ha</value>
</property>
 
<property>
<!--指定yarn的老大 resoucemanager的地址-->
<name>yarn.resourcemanager.hostname</name>
<value>hadoop03</value>
</property>
<property>
<!--NodeManager获取数据的方式-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
配置slaves文件
hadoop04
hadoop05
hadoop06
配置hadoop的环境变量(可不配)
JAVA_HOME=java安装路径
HADOOP_HOME=hadoop安装路径
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export JAVA_HOME PATH CLASSPATH HADOOP_HOME
根据配置文件创建相应目录

在hadoop-2.7.1目录下创建: ①journal目录 ②创建tmp目录 ③在tmp目录下,分别创建namenode目录和datanode目录

使用scp命令将hadoop文件夹copy到其他两台机器

比如copy到hadoop2

scp hadoop root@hadoop2:/home/software

启动集群

启动zookeeper集群

在Zookeeper安装目录的bin目录下执行:sh zkServer.sh start

格式化zookeeper

在zk的leader节点上执行: hdfs zkfc -formatZK,这个指令的作用是在zookeeper集群上生成ha节点(ns节点) 使用 zkServer.sh status可以查看zookeeper的状态

后面的启动步骤可以用一步来代替,进入hadoop安装目录的sbin目录,执行:start-dfs.sh 。但建议还是按部就班来执行,比较可靠。

启动journalnode集群

在01、02、03节点上执行: 切换到hadoop安装目录的bin目录下,执行: sh hadoop-daemon.sh start journalnode 然后执行jps命令查看 出现 Journalnode则启动成功

格式化01节点的namenode

在01节点上执行: hadoop namenode -format

启动01节点的namenode

在01节点上执行: hadoop-daemon.sh start namenode

把02节点的 namenode节点变为standby namenode节点

在02节点上执行: hdfs namenode -bootstrapStandby

启动02节点的namenode节点

在02节点上执行: hadoop-daemon.sh start namenode

在01,02,03节点上启动datanode节点

在01,02,03节点上执行: hadoop-daemon.sh start datanode 如果不能成功启动,删除掉hadoop安装目录下的tmp/datanode下的VERSI目录

启动zkfc(启动FalioverControllerActive)

在01,02节点上执行: hadoop-daemon.sh start zkfc

在01节点上启动 主Resourcemanager

在01节点上执行:start-yarn.sh 启动成功之后02,03节点应该都有nodemanager 的进程 可以使用jps命令查看

检查安装情况

打开浏览器输入:http://192.168.234.21:50070,查看namenode的信息,是active状态的

02节点应该是standby状态的

查看yarn的管理地址http://192.168.234.21:8088(节点01的8088端口)

能成功访问这三个页面并且一个hadoop状态为active另外一个为standby就代表着hadoop完全分布式集群已经搭建成功

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 浅谈mybatis中的占位符

    许喜朝
  • MyBatis-plus乐观锁插件

    比如我在数据库里要修改一个id=1,并且version=1的一条数据,乐观锁会先去查询id=1的version是否等于1,如果等于就修改,如果不等于就不修改

    许喜朝
  • Mybatis高级查询(二):多表联合查询

    提供pojo类并提供get/set方法以及重写toString方法,这里以User类为例,除User类以外还应提供数据库表对应的类,如Orders,item等

    许喜朝
  • hadoop2.x全分布式集群搭建(一主二从)

    然后生成了id_rsa与id_rsa.pub,分别是私有与公有秘钥,我们要把公有秘钥复制到一个authorized_keys文件内,这个文件的作用就是完成无密码...

    爱学习的孙小白
  • Hadoop3-分布式模式安装

    kongxx
  • Hadoop集群配置

    俺也想起舞
  • Hadoop 2.6.0-cdh5.4.0集群环境搭建和Apache-Hive、Sqoop的安装

    搭建此环境主要用来hadoop的学习,因此我们的操作直接在root用户下,不涉及HA。

    chaplinthink
  • 在CentOS 6.9中搭建Hadoop

    修改Hadoop配置文件, Hadoop配置文件在 etc/hadoop 目录下

    北漂的我
  • mysql : utf8mb4 的问题

    微信呢称和QQ呢称上有很多火星文和emoji表情图片,这些数据,如果直接insert到mysql数据库,一般会报错,设置成utf8都不好使,必须改成utf8mb...

    菩提树下的杨过
  • 大数据-Hadoop的使用指南

    1.x版本系列:hadoop版本当中的第二代开源版本,主要修复0.x版本的一些bug等

    cwl_java

扫码关注云+社区

领取腾讯云代金券