hadoop集群篇--从0到1搭建hadoop集群

一。前述

本来有套好好的集群,可是不知道为什么虚拟机镜像文件损坏,结果导致集群不能用。所以不得不重新搭套集群,借此机会顺便再重新搭套吧,顺便提醒一句大家,自己虚拟机的集群一定要及时做好快照,最好装完每个东西后记得拍摄快照。要不搞工具真的很浪费时间,时间一定要用在刀刃上。废话不多说,开始准备环境搭建,本集群搭建完全基于企业思想,所以生产集群亦可以参照此搭建。

二。集群规划

 三。配置

1.配置集群节点之间免密操作。

因为在node01(namenode)节点要启动datanode节点,所以需要配置node01到三台datanode节点的免密操作

 因为两个namenode之间需要互相切换降低对方的级别所以node01,node02之间需要进行免密操作。

具体步骤如下:

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

scp id_dsa.pub  root@node04:`pwd`/node01.pub

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

关闭防火墙:

sudo systemctl stop firewalld.service && sudo systemctl disable firewalld.service

2.上传hadoop安装包到某一节点上,进行配置

假设配置在此目录下

第一步:配置hadoop-env.sh 

使用命令echo $JAVA_HOME 确定jd目录。

配置java环境。

export JAVA_HOME=/usr/java/jdk1.7.0_67

第二步:配置hdfs-site.xml

<property>   <name>dfs.nameservices</name>   <value>mycluster</value>//配置集群的别名,所以当企业中多套集群时,可以使用此别名分开 </property> <property>   <name>dfs.ha.namenodes.mycluster</name>//配置两个namenode的逻辑名称   <value>nn1,nn2</value> </property> <property>   <name>dfs.namenode.rpc-address.mycluster.nn1</name>//配置两个namenode的真正物理节点和rpc通信端口   <value>node01:8020</value> </property> <property>   <name>dfs.namenode.rpc-address.mycluster.nn2</name>//配置两个namenode的真正物理节点rpc通信端口   <value>node02:8020</value> </property> <property>   <name>dfs.namenode.http-address.mycluster.nn1</name>//配置两个namenode的真正物理节点http通信端口   <value>node01:50070</value> </property> <property>   <name>dfs.namenode.http-address.mycluster.nn2</name>//配置两个namenode的真正物理节点http通信端口   <value>node02:50070</value> </property>

 <property>   <name>dfs.namenode.shared.edits.dir</name>   <value>qjournal://node01:8485;node02:8485;node03:8485/mycluster</value>//配置三个journalnode的物理地址 </property> <property>   <name>dfs.journalnode.edits.dir</name>//配置journalnode共享edits的目录   <value>/var/sxt/hadoop/ha/jn</value> </property> <property>   <name>dfs.client.failover.proxy.provider.mycluster</name>   <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>//配置zkfc实现的真正类 </property> <property>   <name>dfs.ha.fencing.methods</name>//配置zkfc隔离机制   <value>sshfence</value> </property> <property>   <name>dfs.ha.fencing.ssh.private-key-files</name>//配置zkfc切换对方namenode时所使用的方式   <value>/root/.ssh/id_dsa</value> </property> <property>    <name>dfs.ha.automatic-failover.enabled</name>/配置是否自动开启zkfc切换    <value>true</value>  </property> 第三步:配置core-site.xml  <property>   <name>fs.defaultFS</name>   <value>hdfs://mycluster</value>//配置集群的别名 </property> <property>    <name>ha.zookeeper.quorum</name>    <value>node02:2181,node03:2181,node04:2181</value>//配置和zookeep通信地址和端口  </property>

<property>    <name>hadoop.tmp.dir</name>//配置hadoop元数据的存放目录    <value>/var/sxt/hadoop-2.6/ha</value>  </property> 第四步:配置slaves

即datanode节点

对应datanode节点的host或者ip

第五步:分发配置到其他节点相同目录

scp -r hadoop-2.6.5 root@node04:`pwd`

第六步:配置zookeeeer集群

同样上传到某一节点 然后配置

 1.cp zoo_sample.cfg zoo.cfg先改名 zookeeper集群识别zoo.cfg文件

2.配置conf/zoo.cfg dataDir=/var/sxt/zk server.1=node02:2888:3888 server.2=node03:2888:3888 server.3=node04:2888:3888 3.配置集群节点识别

mkdir -p /var/sxt/zk echo 1 > myid     //数字根据节点规划

4.配置全局环境变量

export ZOOKEEPER=/opt/soft/zookeeper-3.4.6 export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER/bin

5.启动集群

分别启动三台节点,然后查看状态

 zkServer.sh start  zkServer.sh statu

启动成功!!!

 第七步:启动集群顺序(重要!!!)

   1.先启动journalnode

     hadoop-daemon.sh start journalnode

   2.在两个namenode节点创建/var/sxt/hadoop-2.6/ha 即hadoop.tmp.dir的目录存放元数据(默认会创建,不过最好还是手工创建吧,并且里面一定是干净目录,无任何东西)

   3.在其中一台namenode节点格式化

    hdfs namenode -format

  4.然后启动namenode!!!注意这个一定要先启动,然后再在另一台namenode同步,为了是让里面有数据

hadoop-daemon.sh start namenode

  5.然后在另一台namenode节点执行同步hdfs namenode  -bootstrapStandby

6.在主节点启动集群

start-dfs.sh

7.向zookeeper注册active节点

hdfs zkfc -formatZK

8.启动zkFC负责切换

hadoop-daemon.sh start zkfc

至此,集群启动成功启动成功!!

9.web-ui验证

10.下一次启动时,只需要先启动zookeper,然后在namenode的管理节点启动start-dfs.sh即可 !!!

最后,别忘拍摄快照哦!!

持续更新中。。。。,欢迎大家关注我的公众号LHWorld.

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏枕边书

Linux - 请允许我静静地后台运行

前言 常在 linux 下玩耍的开发者肯定会经常遇到需要对进程调度的情况,在 windows 中点击 最小化 去干别的就 OK 了,那么在 linux 下怎么办...

26050
来自专栏BeJavaGod

分布式系统的那些事儿(三) - 系统与系统之间的调用

系统与系统之间的调用通俗来讲,分为本地同一台服务器上的服务相互调用与远程服务调用,这个都可以称之为RPC通信。浅白点讲,客户访问服务器A,此时服务器要完成某个动...

36440
来自专栏帅小子的日常

redis集群的搭建

38850
来自专栏网站漏洞修补

struts2架构网站漏洞修复详情与利用漏洞修复方案

struts2从开发出来到现在,很多互联网企业,公司,平台都在使用apache struts2系统来开发网站,以及应用系统,这几年来因为使用较多,被攻击者挖掘出...

13830
来自专栏互扯程序

java 诊断工具—— Arthas

该说不说!小编做的这些功能,最讨厌的就是优化!某些前辈大佬写的代码小辈我实在不敢恭维!那逻辑!那sql!

23110
来自专栏IT技术精选文摘

从构建分布式秒杀系统聊聊分布式锁

最近懒成一坨屎,学不动系列一波接一波,大多还都是底层原理相关的。上周末抽时间重读了周志明大湿的 JVM 高效并发部分,每读一遍都有不同的感悟。路漫漫,借此,把前...

12230
来自专栏小狼的世界

Gearman的问题分析与深入研究

Gearman作为一个优秀的分布式解决方案,已经被众多的公司或者团队所采用,我在之前的一篇文章中也有过介绍。但是目前对于woker的执行状态和结果监控,特别是放...

12120
来自专栏零基础使用Django2.0.1打造在线教育网站

利用Flask搭建微电影视频网站(四):后台页面搭建

努力与运动兼备~~~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!

65110
来自专栏编程坑太多

『高级篇』docker之kubernetes基础集群部署(上)(33)

  ETCD保证了数据的存储,保证了数据的高可用,还有数据的一致性,它跟zookeeper类似。kubernetes需要存储很多东西,像它本身的节点信息,组件信...

9730
来自专栏Flutter&Dart

DartVM服务器开发(第八天)--http服务端框架

Aqueduct是一个HTTP Web服务器框架,用于构建用Dart编写的REST应用程序。

49940

扫码关注云+社区

领取腾讯云代金券