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

一。前述java

原本有套好好的集群,但是不知道为何虚拟机镜像文件损坏,结果致使集群不能用。因此不得不从新搭套集群,借此机会顺便再从新搭套吧,顺便提醒一句你们,本身虚拟机的集群必定要及时作好快照,最好装完每一个东西后记得拍摄快照。要不搞工具真的很浪费时间,时间必定要用在刀刃上。废话很少说,开始准备环境搭建,本集群搭建彻底基于企业思想,因此生产集群亦能够参照此搭建。node

二。集群规划web

 

 三。配置apache

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

由于在node01(namenode)节点要启动datanode节点,因此须要配置node01到三台datanode节点的免密操做ssh

 由于两个namenode之间须要互相切换下降对方的级别因此node01,node02之间须要进行免密操做。ide

具体步骤以下:工具

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

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

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.

 

相关文章
相关标签/搜索