【云计算平台搭建】之Hadoop2.6 虚拟机环境配置

1、虚拟机虚拟linux 系统机器4台,分别标记为node1,node2,node3,node4,安装centos 6.5 linux OS, 修改机器的/etc/hosts和/etc/sysconfig/network配置。

2、部署节点,4台机器的节点分布如下表

Machine

Namenode

Datanode

JournalNode

ZooKeeper

ZKFC

RM

NM

total

Node1

3

Node2

6

Node3

4

Node4

4

total

2

3

3

3

2

1

3

17

ZKFC:ZOOkeeper failover configure, RM:resourcemanager,  NM:node manager

3、下载zookeeper 及hadoop2.6

目前,最新版Zookeeper 3.4.6,地址:http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/

Hadoop2.6,目前,官网上只有32位的hadoop 安装文件,如果需要64位的必须要编译官网上的64位源码,编译过程非常耗费时间,一般要花上2个小时以上(视网速而定),编译后的64位的hadoop2.6-x64.tar.gz 文件, 地址:http://pan.baidu.com/s/1kT9wUiz

4、配置文件

Core-site.xml:

<property>

  <name>hadoop.native.lib</name>

    <value>true</value>

</property>

<property>

    <name>fs.defaultFS</name>

    <value>hdfs://mycluster</value>

</property>

 <property>

    <name>ha.zookeeper.quorum</name>

       <value>node1:2181,node2:2181,node3:2181</value>

 </property>

<property>

    <name>hadoop.tmp.dir </name>

      <value>/opt/hadoop2</value>

 </property>

Hdfs-site.xml

<property>

    <name>dfs.nameservices</name>

      <value>mycluster</value>

</property>

 <property>

    <name>dfs.ha.namenodes.mycluster</name>

<value>nn1,nn2</value>

</property>

<property>

  <name>dfs.namenode.rpc-address.mycluster.nn1</name>

    <value>node1:8020</value>

</property>

  

<property>

<name>dfs.namenode.rpc-address.mycluster.nn2</name>

    <value>node2:8020</value>

</property>

<property>

  <name>dfs.namenode.http-address.mycluster.nn1</name>

    <value>node1:50070</value>

</property>

 

<property>

      <name>dfs.namenode.http-address.mycluster.nn2</name>

        <value>node2:50070</value>

 </property>

<property>

  <name>dfs.namenode.shared.edits.dir</name>

    <value>qjournal://node2:8485;node3:8485;node4:8485/mycluster</value>

 </property>

<property>

  <name>dfs.client.failover.proxy.provider.mycluster</name>

<value>

org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

</value>

</property>

<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_dsa</value>

</property>

<property>

  <name>dfs.journalnode.edits.dir</name>

    <value>/opt/jn/data</value>

 </property>

 <property>

    <name>dfs.ha.automatic-failover.enabled</name>

       <value>true</value>

 </property>

<property>

    <name>dfs.datanode.data.dir</name>

    <value>/var/hadoop</value>

</property>

Mapred-site.xml

<property>

         <name>mapreduce.framework.name</name>

          <value>yarn</value>

 </property>

Yarn-site.xml

    <property>

          <name>yarn.nodemanager.aux-services</name>

          <value>mapreduce_shuffle</value>

  </property>

          

  <property>

            <name>yarn.nodemanager.aux-services.mapredce.shuffle.class</name>

            <value>org.apacvhe.hadoop.mapred.ShuffleHandler</value>

 </property>

 <property>

    <name>yarn.resourcemanager.hostname</name>

    <value>node1</value>

 </property>

5、Operating theHadoop Cluster

1、  To start a Hadoop cluster youwill need to start both the HDFS and YARN cluster.

1.1、 配置hadoop 中的slaves,每行1个

1.2、 启动三个zookeeper:./zkServer.sh start1

1.3、 启动三个journalNode:./Hadoop-daemon.sh startjournalnode

1.4、在其中之一namenode 上格式化:./hdfs namenode –format

1.5、 启动上面的namenode

1.6、 在另外一台namenode 上执行:./hdfs namnode -bootstrapStandby

1.7、启动第二个namenode

1.8、 在其中一个namenode上初始化zkfc: ./hdfs zkfc –formatZK

1.9、停止上面所有节点:./stop-dfs.sh

1.10、 全面启动:./start-dfs.sh

1.11、 Jps 查看启动的进程

1.12、 启动资源管理器yarn-daemon.sh start resourcemanager

1.13、 启动节点管理器start NodeManagers on all slaves:./yarn-daemon.sh start nodemanager

1.14、 再次使用jps查看启动的进程,是否安装预先设计好的节点启动。

1.15、最后,如果安装完毕,以后启动使用3个命令。

2、其他

首先,启动zookeeper

./zkServer.sh start

其次,启动HDFS

./start-dfs.sh start

最后,启动YARN

./start-yarn.sh start

3、 关闭hadoop,采用相反的过程。

./stop-yarn.sh stop

./stop-dfs.sh stop

./zkServer.sh stop

6、页面查看HDFS、YARN

HDFS:namenode1: http://node1:50070

       Namenode2: http://node2:50070

YARN:ResourceNode:http://node1:8088

备注:在本地机器上,windows/system32/etc/hosts 文件中已经配置了node1,node2,node3,node4的IP地址,所以直接用hostname代替了IP address.

7、免密码登录

1、 各台机器上执行下面命令

$ ssh-keygen -tdsa -P '' -f ~/.ssh/id_dsa

  $ cat ~/.ssh/id_dsa.pub>> ~/.ssh/authorized_keys

2、 将node1 的id_dsa.pub 合并到其他机器的~/.ssh/authorized_keys中

   $ scp ~/.ssh/id_dsa.pub root@node2:~

   $ scp ~/.ssh/id_dsa.pub root@node3:~

   $ scp ~/.ssh/id_dsa.pub root@node4:~

3、 Node2、node3、node4分别执行命令:

$ cat ~/id_dsa.pub >>~/.ssh/authorized_key

4、  在hdfs-site.xml配置中增加

  <property>

      <name>dfs.ha.fencing.ssh.private-key-files</name>

      <value>/root/.ssh/id_dsa</value>   

</property>

8、常见问题

1.         防火墙问题

错误:ipc.Client: Retrying connect to server:

原因:防火墙阻止了RPC 协议的通信,所以报错。

措施:service iptables stop (当然可以配置防火墙,使得开放相应的端口)

2.         版本问题

错误:

14/10/10 08:35:55 INFO namenode.NameNode: createNameNode [-format]
Java HotSpot(TM) Server VM warning: You have loaded library /home/hadoop/hadoop-2.5.1/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
14/10/10 08:35:56 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

原因:JDK 版本与hadoop 不匹配。如本文中,所使用的JDK 32位的JDK1.8_11,hadoop2.6 64位的,导致出现上述错误。

措施:安装64位的JDK,修改hadoop配置文件 hadoop-env.sh 中的JAVA_HOME设置。同时修改JDK环境,修改/etc/profile文件。重启后,错误消失。

3.         Datanode 无法启动

错误:无Datanode 节点

原因:每次namenode format会重新创建一个namenodeId,tmp/dfs/data下包含了上次format下的id,namenode format清空了namenode下的数据,但是没有清空datanode下的数据,所以造成namenode节点上的namespaceIDdatanode节点上的namespaceID不一致。启动失败.

措施:修改hdfs-site.xml文件,指定datanode文件存放目录,默认会存放到临时目录中。然后,所有datanode机器上的tmp目录下的hadoop有关指令全部删除(rm –rf Hadoop*,hdfs-site.xml 文件中增加:

<property>

           <name>dfs.datanode.data.dir</name>

           <value>/var/hadoop</value>

</property>

(确保/var/Hadoop 文件存在,如果不存在,新建一个。当然,可以任意设置存放地址)

 

4、修改hadoop集群的pid文件存放位置

错误:提示no datanode,no namenode等等之类的信息

原因:进程的pid文件默认都是保存在系统的/tmp目录下面,系统每个一段时间就会清楚/tmp下面的内容,于是ls /tmp看了一下,果然没有相关进程的pid文件了。才导致了stop-all.sh无法停止集群的原因。

措施:

1 在集群各个节点的/var目录下面创建一个文件夹: mkdir -p /var/hadoop/pids,记得更改这个文件夹的权限,chown -R hadoop:hadoop/var/hadoop,将这个目录及子目录的拥有者改为你的当前用户,不然执行start-all.sh的时候当前用户会没有权限创建pid文件(root下可以省略这一步)
2 修改hadoop-env.sh增加:export HADOOP_PID_DIR=/var/hadoop/pids
3 修改yarn-env.sh增加:export YARN_PID_DIR=/var/hadoop/pids

最后,不仅仅是修改master的所有env文件,集群中slaves的所有节点的这些文件都要修改!

5、启动hive出错

      错误:[ERROR] Terminal initialization failed; falling back to unsupported

      原因:Hive has upgradedto Jline2but jline0.94 existsinthe Hadoop lib.

   措施:进入到hadoop安装目录下的share/hadoop/yarn/lib下删除 jline的jar文件。再启动hive即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值