【hadoop】搭建完整hadoop集群

根据官方文档搭建完整hadoop集群,包括NN, DN , JN , ZK,ZKFC,RS ,NM,

参考官方文档

hdfs:

http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html

resourceManager:

http://hadoop.apache.org/docs/r2.5.2/hadoop-yarn/hadoop-yarn-site/ResourceManagerHA.html


因为我搭建了四台虚拟机,所以很多节点是部署在同一台虚拟机上的。四台虚拟机的hostname分别是node1、node2、node3、node4,上面第一步中已经配置好hosts

 NameNodeDateNodeJournalNodesZookeeperZKFCRSNodeManage
node11 111  
node211111 1
node3 111 11
node4 1   11


1.准备工作

       1)克隆四台linux虚拟机  过程参考 点击打开链接

        2)设置好网络、host、时间同步、免密码传输(这个是为了后期配置文档传输)过程参考 点击打开链接

2.安装jdk,配置环境变量

       1)下载安装包,上传到linux虚拟机上,我安装的为1.7

        2)配置环境变量 

vi + /etc/profile
export JAVA_HOME=#jdk安装路径
export PATH=$PANTH:$JAVA_HOME/bin
:wq
source /etc/profile

3.下载hadoop包,解压

我使用的是hadoop-2.5.1



4.搭建zookeeper集群

1)下载zookeeper,解压。我用的是3.4.6

2)安装目录下的/conf下,新建zoo.cfg或者修改zoo.sample.cfg为zoo.cfg

tickTime=2000
dataDir=/opt/zookeeper#修改
clientPort=2181
initLimit=5
syncLimit=2
#追加
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
3)在dataDir设置的路径下新建myid

如:node1

echo 1 > myid


5.修改hadoop配置文件

  1)修改hdfs-site.xml

#name_service
<property>
  <name>dfs.nameservices</name>
  <value>yzhang</value>#yzhang为我自定义的名字
</property>
#nameservice_id

<property>
  <name>dfs.ha.namenodes.yzhang</name>
  <value>nn1,nn2</value>#nn1是用的官方自定义的名字,也可以改成其他
</property>
#rpc,有几台配几个

<property>
  <name>dfs.namenode.rpc-address.yzhang.nn1</name>#node1-node4是配置好的四台虚拟机hostname
  <value>node1:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.yzhang.nn2</name>
  <value>node2:8020</value>
</property>
#http

<property>
  <name>dfs.namenode.http-address.yzhang.nn1</name>
  <value>node1:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.yzhang.nn2</name>
  <value>node2:50070</value>
</property>

#jn

<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://node1:8485;node2:8485;node3:8485/yzhang</value>
</property>
<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/opt/journal</value>
</property>
#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>

#failover

<property>
  <name>dfs.client.failover.proxy.provider.yzhang</name>
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

 <property>
   <name>dfs.ha.automatic-failover.enabled</name>
   <value>true</value>
 </property>

  2)修改core-site.xml

<property>
  <name>fs.defaultFS</name>
  <value>hdfs://yzhang</value>
</property>

  <property>
   <name>hadoop.tmp.dir</name>
   <value>/opt/hadoop</value>#官方路径是在tmp下
  </property>

 <property>
   <name>ha.zookeeper.quorum</name>
   <value>node1:2181,node2:2181,node3:2181</value>
 </property>


  3)修改slaves这里定义dn,而且map-reduce中的nm会与dn保持一致

node2
node3
node4

  4)修改hadoop-env.sh

默认使用的是${JAVA_HOME},但是配置了环境变量依旧会报错,不知道原因,但是修改了就可以了
export JAVA_HOME=/usr/java/jdk1.7.0_67


    5)修改yarn-site.xml

 <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
 <property>
   <name>yarn.resourcemanager.ha.enabled</name>
   <value>true</value>
 </property>
 <property>
   <name>yarn.resourcemanager.cluster-id</name>
   <value>cluster1</value>
 </property>
 <property>
   <name>yarn.resourcemanager.ha.rm-ids</name>
   <value>rm1,rm2</value>
 </property>
 <property>
   <name>yarn.resourcemanager.hostname.rm1</name>
   <value>node3</value>
 </property>
 <property>
   <name>yarn.resourcemanager.hostname.rm2</name>
   <value>node4</value>
 </property>
 <property>
   <name>yarn.resourcemanager.zk-address</name>
   <value>node1:2181,node2:2181,node3:2181</value>
 </property>


   6)修改mapred.xml

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


6.启动jn集群

hadoop-daemon.sh start journalnode


7.格式化其中一台namenode,启动namenode,在未格式化的nn上同步

hdfs namenode -format

hadoop-daemon.sh start namenode

hdfs namenode -bootstrapStandby


8.启动zk集群,在一台nn上格式化zkfc

zkServer.sh start
zkServer.sh status

hdfs zkfc -formatZK


9.全部启动

start-all.sh start

因为启动是先启动的namenode,所以在格式化好的第二次启动,直接用这个命令,可能会出现nn启动不成功的情况,需要手动启动

hadoop-daemon.sh start namenode



10.手动启动resourceManager

在哪一台服务器全部启动,就会启动这一台的resourceMangeer,我在node1启动,启动后检测到node1不是RM,就会杀死进程,所以需要手动启动两台RM

yarn-daemon.sh start resourcemanager


11.通过jps命令查看每台服务器上是否启动成功,如果有什么错误看对应日志。如果部署错误,需要删掉core-site.xml配置的hadoop.tmp.dir的文件和hdfs-site.xml配置的jn的edits路径文件。然后重新格式化namenode,格式化zkfc

12.通过web UI 监测集群

hadoop:node1:50070

resourcemanager:node3:8088


13.权限问题

个人测试权限可以关闭

在hdfs.site添加

  <property>
     <name>dfs.permissions.enabled</name>
     <value>false</value>
  </property>










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值