文档章节

Hadoop 2.X 集群安装部署

轩辕居士
 轩辕居士
发布于 2017/03/02 23:00
字数 4878
阅读 40
收藏 0

注意事项:

     我们在正式搭建集群之前一定要先弄清楚以下几个问题:

1、我们到底要使用hadoop的哪个版本?是Apache hadoop,Cloudera hadoop,还是Hortonworks的hadoop?

2、我们到底要准备搭建一个多大规模的集群?20台以内,20-50台,还是50台以上?

3、我们这个集群到底是怎么规划的?几台namenode,几台datanode,几台zookeeper,几台journalnode,几台resourcemanager……包括具体的IP地址怎么划分?

这些都需要我们在安装之前弄清楚!

简介:

      在hadoop2.X 中通常由两个NameNode组成,一个处于active状态,另一个处于standby状态。Active NameNode对外提供服务,而Standby NameNode则不对外提供服务,仅同步active namenode的状态,以便能够在它失败时快速进行切换。

     hadoop 2.X官方文档中提供了两种HDFS  HA的解决方案,一种是NFS(几乎不用),另一种是QJM。这里我们使用简单的QJM。在该方案中,主备NameNode之间通过一组JournalNode同步元数据信息,一条数据只要成功写入多数JournalNode即认为写入成功。通常配置奇数个JournalNode。

     此外,我们还需要配置一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当Active NameNode挂掉了,会自动将Standby NameNode的状态切换为Active。        

      但是在hadoop-2.2.0中依然存在一个问题,就是ResourceManager只有一个,存在单点故障,不过在hadoop-2.4以上版本已经解决了这个问题,有两个ResourceManager,一个是Active,一个是Standby,状态由zookeeper进行协调。

      因此,我建议选择Hadoop 2.4 以上版本的Hadoop搭建集群!

集群规划:

【注】:Hadoop集群的伪分布式安装和分布式安装虽然并不完全相同,但是基本原理是一致的,我们这里只是以在虚拟机中搭建伪分布式为例,仅供大家学习参考。

      接下来我以apache hadoop-2.4.1为例,搭建一个拥有5台机器的hadoop集群,集群规划如下:

主机名 IP地址 安装软件 运行进程
hadoop01 192.168.9.201 jdk、hadoop

NameNode

DFSZKFailoverController(zkfc)

ResourceManager

hadoop02 192.168.9.202 jdk、hadoop

NameNode

DFSZKFailoverController(zkfc)

ResourceManager

hadoop03 192.168.9.203 jdk、hadoop

DataNode

NodeManager

JournalNode

QuorumPeerMain

hadoop04 192.168.9.204 jdk、hadoop

DataNode

NodeManager

JournalNode

QuorumPeerMain

hadoop05 192.168.9.205 jdk、hadoop、zookeeper

DataNode

NodeManager

JournalNode

QuorumPeerMain

安装部署:

1、安装Linux系统

       Linux系统有很多个版本,在企业中我们以CentOS、Red Hat、Ubuntu为主,这里我们以CentOS 6.4为例。

       怎么安装Linux我们就不必细说了,一般我们都是选择最小化安装,也可以根据不同的需求安装各种工具。

2、配置Linux环境

【注】:对于很多不熟悉Linux系统的人来说,为了方便大家理解,以下执行的命令中凡是以root用户执行的,均由 # 开头,凡是以hadoop用户执行的,均由 $ 开头。

 2.1 修改主机名

       一定要在root用户下,其他用户是没有这个权限的。

# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hadoop01     #修改hostname

【注】 :如果是最小化安装的Linux,里面可能没有vim这条命令,可以使用vi /etc/sysconfig/network,如果想使用vim命令,可以使用yum –y  install vim 安装。

2.2 修改IP地址

【注】:这里说的配置IP地址都是手动设置IP地址,为的是方便集群统一管理,以及IP地址与主机名之间一一对应。       

       配置虚拟机IP地址有三种方法:

第一种,图形界面话设置。

       右击右上角的network图标,选择【Edit Connection…】

      之后进入如下界面,选择【System eth0】,点击【Edit】,

       然后在【IPv4 Settings】标签下选择【Manual】,点击【Add】,在里面输入IP地址,子网掩码和网关地址,最后点击下方的【Apply】。

第二种,通过【setup】设置。

       在root用户下载命令行输入setup,即可进入,选择【Network configuration】进入配置IP。(如果没有setup命令,就不要用这种方法了)

第三种,通过命令行设置。

       我们首先使用 ifconfig 命令,查看一下本机IP,如果没有显示的话可以查看一下网卡,在CentOS和Red Hat中网卡一般都是eth0,但是有时候并不会显示网卡端口,需要我们自己通过命令查看。比如我这里的网卡就不是eth0,二是ifcfg-p4p1。找到网卡端口之后我们通过修改配置文件的方式修改主机IP

# vim /etc/sysconfig/network-scripts/ifcfg-p4p1
DEVICE="p4p1"
BOOTPROTO="static"               ###修改为静态IP
HWADDR="00:0C:29:3C:BF:E7"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"                     ###激活网卡
TYPE="Ethernet"
UUID="ce22eeca-ecde-4536-8cc2-ef0dc36d4a8c"
IPADDR="192.168.1.201            ###IP地址
NETMASK="255.255.255.0"          ###子网掩码
GATEWAY="192.168.1.1             ###网关
DNS1=8.8.8.8                     ###DNS服务器的地址可以看情况配置
DNS2=8.8.4.4                     ###DNS服务器的地址可以看情况配置

2.3 修改主机名与IP地址的映射关系

      使用root用户下输入

# vim /etc/hosts

进入编辑模式后在里面添加【IP地址  主机名】这一项,

192.168.1.201	 hadoop01
192.168.1.202	 hadoop02
192.168.1.203    hadoop03
192.168.1.204	 hadoop04
192.168.1.205	 hadoop05

2.4 关闭防火墙

  • 查看防火墙状态
# service iptables status
  • 关闭防火墙

# service iptables stop
  • 查看防火墙开机启动状态

chkconfig iptables --list
  • 关闭防火墙开机启动

# chkconfig iptables off

2.5 重启Linux系统

     在修改了主机名和IP地址后要重启一下Linux

# reboot

3、配置ssh免密码登录

【注】:在配置ssh免密码登录之前,一定要先创建一个hadoop用户,如果我们在虚拟机上创建Linux系统的时候就已经创建了hadoop用户,那我们这里就不需要做这个操作了。

# useradd hadoop
# passwd hadoop

       通过以上命令创建一个hadoop用户,密码也是hadoop,我们在配置ssh免密码登录的时候一定要在hadoop 用户下,因为我们是在hadoop用户下启动接下来的hadoop集群,因此我们也是是在hadoop用户下生成的ssh秘钥,并且将其公钥拷贝到其他节点。

       首先要配置hadoop01到hadoop02、hadoop03、hadoop04、hadoop05的免密码登录。

在hadoop01上生成一对钥匙。

$ ssh-keygen -t rsa

这时候会在/home/hadoop 目录下生成id_rsa和id_rsa.pub的两个文件,分别对应私钥和公钥。将公钥拷贝给自己自己。

$ ssh-copy-id  hadoop01

这时候会在 .ssh 的文件夹下生成一个authorized_keys的文件,接下来再将公钥拷贝到其他节点(也就是把authorized_keys这个文件拷贝到其他节点上)。

$ ssh-copy-id  hadoop02
$ ssh-copy-id  hadoop03
$ ssh-copy-id  hadoop04
$ ssh-copy-id  hadoop05

同理,配置hadoop02到hadoop01、hadoop03、hadoop04、hadoop05的免密码登录。

【注】:再次提醒,我们这里是在hadoop用户下生成了秘钥,并将其公钥发送到了各个节点上,因此我们在发送秘钥之前也一定要确保我们其他节点上的机器也都是在hadoop用户下,如果是在root用户下,那就无法实现在hadoop用户下的免密码登录了。

4、安装JDK

       为什么要安装JDK?因为刚刚装好的Linux系统中是没有JDK的,而我们要安装的hadoop是由Java开发的,因此安装JDK是必须的。

       首先我们从下载一个JDK,要注意我们下载的JDK一定要和我们安装的Linux系统版本位数相同,比如32位的Red Hat必须安装32位的JDK,否者会出现错误。另外,我们在选择安装JDK版本的时候一定要选择1.6以上的版本,否则是无法支持hadoop的。

4.1 上传JDK

      将本机Windows系统上下载好的JDK通过WinSCP、SecureCRT或者其他工具上传到虚拟机上的Linux系统中。使用方法很简单,只要Windows和Linux能够相互ping通,直接在Windows系统上打开WinSCP、SecureCRT等,把需要的文件上传到Linux系统的相关目录下即可! 

4.2 解压JDK

     使用root用户下创建一个安装jdk的目录

# mkdir /usr/java

将JDK解压到该文件夹下

# tar -zxvf  jdk-7u67-linux-i586.tar.gz  -C  /usr/java

4.3 添加到环境变量

     还是使用root用户下

# vim /etc/profile

在该文件末尾添加如下内容:

export JAVA_HOME=/usr/java/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin

刷新环境变量

# source /etc/profile

我们可以使用以下命令查看jdk是否安装成功。

# java  -version

接下来将配置好的jdk上传到其他节点上

# scp -r  /usr/java   hadoop02:/usr
# scp -r  /usr/java   hadoop03:/usr
# scp -r  /usr/java   hadoop04:/usr
# scp -r  /usr/java   hadoop05:/usr

【注】:将jdk上传到了各个节点上之后,并没有对各个节点配置环境变量,因此为了验证我们的jdk是否成功安装到了其他节点上,我们还需要把/etc/profile文件上传到各个节点上。因为我们要配置的环境变量有很多,所以我们会在最后的时候才将/etc/profile文件上传到各个节点上。当然,这里我们为了验证一下我们是否成功安装到了其他节点上我们也可以在这直接将/etc/profile 文件上传到其他节点上进行验证。

# scp -r  /etc/profile   hadoop02:/etc/
# scp -r  /etc/profile   hadoop03:/etc/
# scp -r  /etc/profile   hadoop04:/etc/
# scp -r  /etc/profile   hadoop05:/etc/

同样的,我们也要在各个节点上# source /etc/profile 刷新一下环境变量,通过# java -version命令查看jdk是否都成功安装到了各个节点上。

5、安装配置hadoop(在hadoop01上操作)

5.1 下载并解压hadoop安装包

    在http://archive.apache.org/dist/hadoop/common/(在这个网址上可以找到所有的hadoop版本)上下载hadoop-2.4.1.tar.gz,将其上传到Linux系统上,并解压到/home/hadoop/目录下。

# tar -zxvf  hadoop-2.4.1.tar.gz  -C  /home/hadoop

5.2 添加环境变量

     修改/etc/profile文件

# vim  /etc/profile

在文件最后添加如下内容:

export JAVA_HOME=/usr/java/jdk1.7.0_67
export HADOOP_HOME=/home/hadoop/hadoop-2.4.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

5.3 修改配置文件

      hadoop 2.X的配置文件都在 $HADOOP_HOME/etc/hadoop 目录下。切换成hadoop用户执行以下操作:

# su - hadoop
$ cd /home/hadoop/hadoop-2.4.1/etc/hadoop

修改以下6个配置文件:

1)hadoop-env.sh

2)core-site.xml

3)hdfs-site.xml

4)mapred-site.xml

5)yarn-site.xml

6)slaves

5.3.1 修改hadoop-env.sh

        修改java路径

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

5.3.2 修改core-site.xml

        在core-site.xml文件中添加如下内容:

<configuration>

<!-- 指定hdfs的nameservice为ns1 -->

<property>

    <name>fs.defaultFS</name>

    <value>hdfs://ns1</value>

</property>

<!-- 指定hadoop临时目录 -->

<property>

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

    <value>/home/hadoop/hadoop-2.4.1/tmp</value>

</property>

<!-- 指定zookeeper地址 -->

<property>

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

    <value>hadoop03:2181,hadoop04:2181,hadoop05:2181</value>

</property>

</configuration>

5.3.3 修改hdfs-site.xml

<configuration>

<!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->

<property>

    <name>dfs.nameservices</name>

    <value>ns1</value>

</property>

<!-- ns1下面有两个NameNode,分别是nn1,nn2 -->

<property>

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

    <value>nn1,nn2</value>

</property>

<!-- nn1的RPC通信地址 -->

<property>

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

    <value>hadoop01:9000</value>

</property>

<!-- nn1的http通信地址 -->

<property>

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

    <value>hadoop01:50070</value>

</property>

<!-- nn2的RPC通信地址 -->

<property>

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

   <value>hadoop02:9000</value>

</property>

<!-- nn2的http通信地址 -->

<property>

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

   <value>hadoop02:50070</value>

</property>

<!-- 指定NameNode的元数据在JournalNode上的存放位置 -->

<property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://hadoop05:8485;hadoop06:8485;hadoop07:8485/ns1</value>                      
</property>

<!-- 指定JournalNode在本地磁盘存放数据的位置 -->

<property>

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

    <value>/home/hadoop/hadoop-2.4.1/journal</value>

</property>

<!-- 开启NameNode失败自动切换 -->

<property>

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

    <value>true</value>

</property>

<!-- 配置失败自动切换实现方式 -->
<property>
        <name>dfs.client.failover.proxy.provider.ns1</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->

<property>

    <name>dfs.ha.fencing.methods</name>

    <value>sshfence</value>

</property>

<!-- 使用sshfence隔离机制时需要ssh免登陆 -->

<property>

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

    <value>/home/hadoop/.ssh/authorized_keys</value>

</property>

<!-- 配置sshfence隔离机制超时时间 -->

<property>

     <name>dfs.ha.fencing.ssh.connect-timeout</name>

     <value>30000</value>

</property>

<!-- 配置zookeeper集群 -->

<property>

     <name>dfs.zookeeper.quorum </name>

     <value>hadoop05:2181,hadoop06:2181,hadoop07:2181</value>

</property>

</configuration>

5.3.4 修改mapred-site.xml

      在/home/hadoop/hadoop-2.4.1/etc/hadoop目录下并没有mapred-site.xml文件,只有一个mapred-site.xml.template,我们要先把mapred-site.xml.template重命名为mapred-site.xml。

$ mv mapred-site.xml.template  mapred-site.xml

修改mapred-site.xml文件,添加如下内容:

<configuration>
<!-- 指定mr框架为yarn方式 -->
<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>
</configuration>

5.3.5 修改yarn-site.xml

向yarn-site.xml文件中添加如下内容:

<configuration>
<!-- 开启RM高可靠 -->
<property>
	<name>yarn.resourcemanager.ha.enabled</name>
	<value>true</value>
</property>
<!-- 指定RM的cluster id -->
<property>
	<name>yarn.resourcemanager.cluster-id</name>
	<value>yrc</value>
</property>
<!-- 指定RM的名字 -->
<property>
	<name>yarn.resourcemanager.ha.rm-ids</name>
	<value>rm1,rm2</value>
</property>
<!-- 分别指定RM的地址 -->
<property>						   
    <name>yarn.resourcemanager.hostname.rm1</name>
	<value>hadoop01</value>
</property>
<property>						   
    <name>yarn.resourcemanager.hostname.rm2</name>
	<value>hadoop02</value>
</property>
<!-- 指定zk集群地址 -->
<property>
    <name>yarn.resourcemanager.zk-address</name>						            
    <value>hadoop03:2181,hadoop04:2181,hadoop05:2181</value>
</property>
<property>
   <name>yarn.nodemanager.aux-services</name>
   <value>mapreduce_shuffle</value>
</property>
</configuration>

5.3.6 修改slaves

       slaves是指定集群中子节点的位置,包括datanode和nodemanager。

$ vim  slaves

添加如下内容:

hadoop03
hadoop04
hadoop05

5.4 替换32位的本地库

】:Apache提供的hadoop-2.X的安装包是在32位操作系统上编译的,因为hadoop依赖一些C++的本地库,所以如果在64位操作系统上安装hadoop-2.X 就需要重新在64位操作系统上重新编译本地库。如果直接使用Apache提供的32位安装包,在64位系统上就会出现如下的警告信息:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable 对于这种情况,解决的办法有两个:

       第一种方法就是从Apache官网下载hadoop-2.X 的源文件,在64位操作系统上重新编译,这种方法非常的麻烦,进行重新编译还需要下载各种各样的工具,而且在使用maven编译的过程既耽误时间有很容易出现错误。具体的编译方法在这里不再赘述。

       第二种方法,就是从Apache官网下载已经编译好的64位本地库 http://dl.bintray.com/sequenceiq/sequenceiq-bin/ 。我们从中选择对应的本地库,然后替换掉原有32位的。

$ tar -vxf hadoop-native-64-2.4.1.tar  /home/hadoop/hadoop-2.4.1/lib/native

5.5 分发文件

     将hadoop01上配置好的hadoop文件分发到集群的其他节点上。

$ scp -r /home/hadoop/hadoop-2.4.1/  hadoop02:/home/hadoop
$ scp -r /home/hadoop/hadoop-2.4.1/  hadoop03:/home/hadoop
$ scp -r /home/hadoop/hadoop-2.4.1/  hadoop04:/home/hadoop
$ scp -r /home/hadoop/hadoop-2.4.1/  hadoop05:/home/hadoop

     将配置好的环境变量(/etc/profile)复制到其他节点。

# scp -r  /etc/profile   hadoop02:/etc/
# scp -r  /etc/profile   hadoop03:/etc/
# scp -r  /etc/profile   hadoop04:/etc/
# scp -r  /etc/profile   hadoop05:/etc/

然后在各个节点上分别刷新一下环境变量

# source  /etc/profile

【注】:在整个hadoop集群中所有节点的hadoop配置文件都是一样的。

6、安装配置Zookeeper(在hadoop03上操作)

6.1 安装zookeeper

   从http://archive.apache.org/dist/zookeeper/上下载zookeeper,比如zookeeper-3.4.6,然后将下载好的zookeeper上传到Linux上,将上传上来的zookeeper解压到/home/hadoop目录下。

$ tar -zxvf zookeeper-3.4.6.tar.gz  -C  /home/hadoop

6.2 修改环境变量

     修改/etc/profile 文件

# vim  /etc/profile

添加如下内容:

export ZK_HOME=/home/hadoop/zookeeper-3.4.6
export PATH=$PATH:$ZK_HOME/bin

将/etc/profile文件复制到其他zookeeper集群的其他节点上

# scp -r  /etc/profile   hadoop06:/etc/
# scp -r  /etc/profile   hadoop07:/etc/

之后在hadoop04和hadoop05上刷新一下环境变量

# source  /etc/profile

6.3 修改配置文件

     进到/home/hadoop/zookeeper-3.4.6/conf目录下

$ cd /home/hadoop/zookeeper-3.4.6/conf

我们将/home/hadoop/zookeeper-3.4.6/conf目录下的zoo_sample.cfg,复制为zoo.cfg。

$ cp zoo_sample.cfg  zoo.cfg

修改zoo.cfg。

$ vim zoo.cfg

指定dataDir的路径,并添加以下内容:

dataDir=/home/hadoop/zookeeper-3.4.6/zkdata

server.1=hadoop03:2888:3888
server.2=hadoop04:2888:3888
server.3=hadoop05:2888:3888

6.4 创建dataDir路径

$ mkdir  /home/hadoop/zookeeper-3.4.6/zkdata

6.5 创建myid文件

$ touch /home/hadoop/zookeeper-3.4.6/zkdata/myid

向myid文件中写入ID值,内容依据:

server.1=hadoop03:2888:3888
server.2=hadoop04:2888:3888
server.3=hadoop05:2888:3888

例如hadoop03上myid写入1,hadoop04上写入2,hadoop05上写入3。

6.6 分发zookeeper文件

     将配置好的zookeeper文件分发到zookeeper集群的其他节点上。

$ scp -r  /home/hadoop/zookeeper-3.4.6/  hadoop04:/home/hadoop
$ scp -r  /home/hadoop/zookeeper-3.4.6/  hadoop05:/home/hadoop

【注】:修改hadoop04、hadoop05对应的/home/hadoop/zookeeper-3.4.6/zkdata/myid 文件的内容:hadoop04上写入2,hadoop05上写入3。

7、启动

【注】:启动hadoop集群都是在hadoop用户下(实际的生产环境中是不会轻易让人使用root用户的),所以在启动之前一定要确保切换到了hadoop用户,另外,复制过来的文件都是在root用户下操作的,文件的用户和用户组可能都还是root,因此我们需要将/home/hadoop目录改为hadoop用户组,当然我们修改用户和用户组还是要用root用户。

 # chown -R hadoop:hadoop  /home/hadoop

切换到hadoop用户

 # su - hadoop

7.1 启动zookeeper

     分别在hadoop03、hadoop04、hadoop05上启动zookeeper。

$ cd /home/hadoop/zookeeper-3.4.6/bin/

$ ./zkServer.sh start

分别查看三台机器的状态,验证zookeeper是否正常启动。正常启动后对应的状态应该是一个leader,两个follower。

$ ./zkServer.sh status

7.2 启动journalnode

     分别在在hadoop03、hadoop04、hadoop05上启动journalnode。

$ cd /home/hadoop/hadoop-2.4.1

$ sbin/hadoop-daemon.sh start journalnode

运行jps命令检验,查看hadoop03、hadoop04、hadoop05上多了JournalNode进程。

7.3 启动HDFS

7.3.1 格式化HDFS的zookeeper存储目录

        格式化操作的目的是在ZK集群中建立一个节点,用于保存集群中NameNode的状态数据,在hadoop03上执行(只需在一个zookeeper节点执行即可)。

$ hdfs zkfc -formatZK

7.3.2 格式化并启动第一个namenode     

        第一次启动namenode的时候要进行格式化,当然以后就不需要了。格式化操作只要在一台namenode上进行就可以了,例如在hadoop01上执行如下格式化命令:

$ hdfs namenode -format

然后格式化journalnode的数据,这一步是为了实现集群的高可用性做的。

$ hdfs namenode -initializeSharedEdits

启动hadoop01上的namenode服务。

$ cd /home/hadoop/hadoop-2.4.1/
$ sbin/hadoop-daemon.sh start namenode

运行jps,查看hadoop01上namenode服务是否已存在。

7.3.3 启动第二个namenode

        hadoop001已经格式化过,然后同步至hadoop002。

$ hdfs namenode -bootstrapStandby

启动hadoop02上的namenode服务。

$ cd /home/hadoop/hadoop-2.4.1/
$ sbin/hadoop-daemon.sh start namenode

运行jps,查看hadoop02上namenode服务是否已存在。

7.4 启动ZKFC

在所有的namenode节点上执行以下命令,启动zkfc。

$ cd /home/hadoop/hadoop-2.4.1/
$ sbin/hadoop-daemon.sh start zkfc

7.5 启动YARN

      在hadoop01上执行以下命令:

$ cd /home/hadoop/hadoop-2.4.1/
$ sbin/start-yarn.sh

此脚本将会启动hadoop01上的resourcemanager及所有的nodemanager节点。

单独启动单个resourcemanager和nodemanager的命令如下:

$ /home/hadoop/hadoop-2.4.1/sbin/yarn-daemon.sh start resourcemanager
$ /home/hadoop/hadoop-2.4.1/sbin/yarn-daemon.sh start nodemanager

在hadoop02上启动resourcemanager

$ cd /home/hadoop/hadoop-2.4.1/
$ sbin/yarn-daemon.sh start resourcemanager

至此,hadoop集群的搭建工作已经完毕!

验证:

      最后我们再次验证搭建的hadoop集群是否正常。

1、HDFS

  • 在浏览器中输入http://192.168.9.201:50070与http://192.168.9.202:50070,查看两台namenode的状态,其中一个显示为active,另一个显示为standby。
  •  向HDFS上上传一个文件。
$ cd /home/hadoop/hadoop-2.4.1/bin
$ hadoop  fs -put /etc/profile  /profile
  • 查看该文件是否上传成功。
$ hadoop  fs -ls /
  • kill掉处于active状态的namenode。
$ kill -9 <Namenode的端口号> 
  • 查看另一台namenode的状态是否由standby切换为active。
  • 再次执行以下命令,查看上传的文件是否存在。
$ hadoop  fs -ls /
  • 手动启动已经挂掉的那台namenode
$ cd /home/hadoop/hadoop-2.4.1/
$ sbin/hadoop-daemon.sh start namenode
  • 查看chog重新启动的这台namenode的状态是否为standby。

2、YARN

      运行一下hadoop提供的demo中的WordCount程序

$ hadoop jar /home/hadoop/hadoop-2.4.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar wordcount   /profile   /out

如果整个过程中没有报错,且最终结果输出到了hdfs的 /out 中,那就意味着yarn也安装正确。

 

© 著作权归作者所有

轩辕居士
粉丝 0
博文 1
码字总数 4878
作品 0
程序员
私信 提问
Hadoop相关文章索引(3)

环境部署 hadoop-2.7.0.tar.gz hadoop 2.6.0单节点-伪分布式模式安装 hadoop2.x配置jobHistory server(转) Hadoop2.7.2集群搭建详解(三台) 基本常识 Hadoop1.x和2.X的HDFS fsimage和edi...

司小幽
2018/08/22
0
0
部署Spark 0.9集群

Spark 0.9 1 部署Spark集群 这种是运维人员在生产环境下,搭建起一个Spark集群。 (可选)创建新用户 Spark 一般我倾向于把需要启动daemon进程,对外提供服务的程序,即服务器类的程序,安装...

啊莫
2015/12/02
1K
4
视频jourk--hadoop2.x介绍与安装

一、 hadoop介绍 1.hadoop的由来:(google三篇论文) (2003)GFS --> HDFS (2004)MapReduce --> MapReduce (2006)BigTable --> HBase(Hadoop DataBase) 2.hadoop的著名案例 Facebook : HiveQ......

一枚Sir
2014/08/14
329
0
Hadoop基础之HA(高可用)

1.Hadoop2.0产生背景 早期的hadoop版本,NN(namenode)是HDFS集群的单点故障点,每一个集群只有一个NN,如果这个机器或进程不可用,整个集群就无法 使用。为了解决这个问题,出现了一堆针对HDF...

landy8530
2017/11/25
0
0
Ambari在离线环境中安装Hadoop集群

(WJW)Ambari在离线环境中安装Hadoop集群 如果手工安装Hadoop集群,在管理和后继部署中,越来越多的问题不断出现,主要如下:+ 各集群节点的配置同步+ 新应用的部署:比如为集群添加hbase应用,...

白石
2015/10/26
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
1K
12
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
22
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
16
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
25
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部