hadoop伪分布式平台搭建(centos 6.3)

  最近要写一个数据量较大的程序,所以想搭建一个hbase平台试试。搭建hbase伪分布式平台,需要先搭建hadoop平台。本文主要介绍伪分布式平台搭建过程。

目录:

  一、前言

  二、环境搭建

  三、命令测试

  四、启动YARN

  五、web查看


  一、前言

  1、开始搭建前上官网看了一下,发现最新版本是3.0,但一想到跨版本而且又是最新版本的一般都会出现各种不一样的问题,所以决定使用了2.7.3,hadoop2的最新版本,至于跟后面搭建hbase的版本兼不兼容的情况等遇到再看怎么处理(实验证明最新版本的hbase1.2.3跟hadoop2.7.3是完美兼容的)。

  2、机器只有实体机一台 10.1.2.108,centos 6.3,64位系统

[root@root@ZhaoWei_10_1_2_108 ~]# cat /etc/issue 
CentOS release 6.3 (Final)
Kernel \r on an \m

[root@root@ZhaoWei_10_1_2_108 ~]# getconf LONG_BIT
64

  3、大概了解了下就网上到处找安装教程,发现写的好的还是一大堆的,不过大家基本上都是参考官方安装教程

  4、由于开了多个窗口,所以本文中的shell命令有时候是root运行,有时候是hadoop账号运行,需要注意hostname以便区分

  二、环境搭建

  1、新建hadoop用户

[root@ZhaoWei_10_1_2_108 home]# useradd hadoop
[root@ZhaoWei_10_1_2_108 home]# passwd hadoop
Changing password for user hadoop.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
  2、下载安装包
需要的安装包有hadoop 下载后可以根据MD5比较来判断是否下载完整。
hadoop的版本是2.7.3,hadoop后台主要是java,所以需要依靠jdk环境运行,我下载的版本是jdk1.8(jdk-8u40-linux-x64.tar.gz)。但是不知道为什么下载后在linux下解压一直出错,后来直接在windows下解压后发到linux环境。
  3、安装jdk
tar xvzf jdk-8u40-linux-x64.tar.gz
mv jdk1.8.0_40/ /usr/local/java1.8.0_40
ln -s /usr/local/java1.8.0_40 /usr/local/java

cat >> /etc/profile <<'MUL'
JAVA_HOME=/usr/local/java/
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
MUL

source /etc/profile
[root@root@ZhaoWei_10_1_2_108 ~]# java -version
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)

  4、配置本机免密ssh登陆

公司的机器是配好ssh的,如果没安装机器可以使用命令

yum install openssh-clients -y
yum install openssh-server -y

安装成功后配置免密登陆需要先切换hadoop账号,使用ssh-keygen生成sshkeys,并且将公钥授权给本机

[root@root@ZhaoWei_10_1_2_108 ~]# su - hadoop
[hadoop@root@ZhaoWei_10_1_2_108 ~]$ ssh-keygen -t rsa    # 一路回车
[hadoop@root@ZhaoWei_10_1_2_108 ~]$ cd ~/.ssh/
[hadoop@root@ZhaoWei_10_1_2_108 .ssh]$ cat id_rsa.pub >> authorized_keys
[hadoop@root@ZhaoWei_10_1_2_108 .ssh]$ chmod 600 ./authorized_keys

修改/etc/hosts,增加localhosts

[hadoop@root@ZhaoWei_10_1_2_108 .ssh]$ hostname
root@ZhaoWei_10_1_2_108
[hadoop@root@ZhaoWei_10_1_2_108 .ssh]$ cat /etc/hosts
10.1.2.108   localhost
10.1.2.108   root@ZhaoWei_10_1_2_108

由于公司机器的ssh默认端口是322,而不是22,所以配置免密登陆是需要指定端口的ssh -p322,这里我们还需要修改配置文件,root权限查看配置文件末两行,第一行是设置使用322端口进行通信,第二行是将ssh配置成监听机器的全网段,包含内外网ip。如果没有这一行,需要自己添加,不然后面启动hadoop SecondNode会一直提示连接0.0.0.0失败。

重启ssh服务。

[root@root@ZhaoWei_10_1_2_108 ~]#  tail /etc/ssh/sshd_config
Port 322 
ListenAddress 0.0.0.0

[root@root@ZhaoWei_10_1_2_108 ~]# service sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]

接着运行下面命令成功即可。

[hadoop@root@ZhaoWei_10_1_2_108 ~]$ ssh localhost            
ssh: connect to host localhost port 22: Connection refused
[hadoop@root@ZhaoWei_10_1_2_108 ~]$ ssh -p322 localhost
Last login: Tue Nov  1 20:40:23 2016 from 10.1.2.108

如果提示

-bash: /usr/bin/ssh: Permission denied

则root下使用下面命令

chmod  a+x /usr/bin/ssh

 

  5、安装hadoop

因为我下载的编译后的包,所以是可以直接解压运行的。

[root@root@ZhaoWei_10_1_2_108 tar]# cd /home/hadoop/tar/
[root@root@ZhaoWei_10_1_2_108 tar]# tar -xzf hadoop-2.7.3.tar.gz 
[root@root@ZhaoWei_10_1_2_108 tar]# chown -R hadoop: /home/hadoop/
[root@root@ZhaoWei_10_1_2_108 tar]# mv hadoop-2.7.3 /usr/local/hadoop
[root@root@ZhaoWei_10_1_2_108 tar]# chown -R hadoop: /usr/local/hadoop/ 
[hadoop@root@ZhaoWei_10_1_2_108 ~]$ cd /usr/local/hadoop/
[hadoop@root@ZhaoWei_10_1_2_108 hadoop]$ ./bin/hadoop version
Hadoop 2.7.3
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r baa91f7c6bc9cb92be5982de4719c1c8af91ccff
Compiled by root on 2016-08-18T01:41Z
Compiled with protoc 2.5.0
From source with checksum 2e4ce5f957ea4db193bce3734ff29ff4
This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-2.7.3.

一般在运行hadoop命令会提示Error: JAVA_HOME is not set and could not be found.那是因为hadoop的配置文件没配置好。修改 /usr/local/hadoop/etc/hadoop/hadoop-env.sh支持java环境并配置好ssh 端口。

export JAVA_HOME=/usr/local/java   # 本来是${JAVA_HOME}
export HADOOP_SSH_OPTS="-p 322"  # 末尾增加一行

  6、hadoop单机运行

hadoop默认就是单机模式,java单进程运行,方便调试。我们可以直接使用原生的例子来测试hadoop是否安装成功,运行下面命令就可以看到hadoop原生所有例子

若出现提示 “WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable”,该 WARN 提示可以忽略,不会影响 Hadoop 正常运行(可通过编译 Hadoop 源码解决)。

[hadoop@root@ZhaoWei_10_1_2_108 hadoop]$ ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar 
An example program must be given as the first argument.
Valid program names are:
  aggregatewordcount: An Aggregate based map/reduce program that counts the words in the input files.
  aggregatewordhist: An Aggregate based map/reduce program that computes the histogram of the words in the input files.
  bbp: A map/reduce program that uses Bailey-Borwein-Plouffe to compute exact digits of Pi.
  dbcount: An example job that count the pageview counts from a database.
  distbbp: A map/reduce program that uses a BBP-type formula to compute exact bits of Pi.
  grep: A map/reduce program that counts the matches of a regex in the input.
  join: A job that effects a join over sorted, equally partitioned datasets
  multifilewc: A job that counts words from several files.
  pentomino: A map/reduce tile laying program to find solutions to pentomino problems.
  pi: A map/reduce program that estimates Pi using a quasi-Monte Carlo method.
  randomtextwriter: A map/reduce program that writes 10GB of random textual data per node.
  randomwriter: A map/reduce program that writes 10GB of random data per node.
  secondarysort: An example defining a secondary sort to the reduce.
  sort: A map/reduce program that sorts the data written by the random writer.
  sudoku: A sudoku solver.
  teragen: Generate data for the terasort
  terasort: Run the terasort
  teravalidate: Checking results of terasort
  wordcount: A map/reduce program that counts the words in the input files.
  wordmean: A map/reduce program that counts the average length of the words in the input files.
  wordmedian: A map/reduce program that counts the median length of the words in the input files.
  wordstandarddeviation: A map/reduce program that counts the standard deviation of the length of the words in the input files.

运行下面命令可以测试单词过滤例子grep

[hadoop@root@ZhaoWei_10_1_2_108 hadoop]$ mkdir input
[hadoop@root@ZhaoWei_10_1_2_108 hadoop]$ cp *.txt input/
[hadoop@root@ZhaoWei_10_1_2_108 hadoop]$ ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output 'SOFT[A-Z]+'

[hadoop@root@ZhaoWei_10_1_2_108 hadoop]$ cat output/part-r-00000
49      SOFTWARE
[hadoop@root@ZhaoWei_10_1_2_108 hadoop]$ ls output/
part-r-00000 _SUCCESS

如果出现 metrics.MetricsUtil: Unable to obtain hostName的错误那就是hostname没配置好,修改好即可。

[root@root@ZhaoWei_10_1_2_108 tar]# hostname root@root@ZhaoWei_10_1_2_108

如果在这之前已经安装了伪分布式平台,则以上命令是不会输出到当前文件系统的,而是会发到hdfs文件系统中。

  6、伪分布式安装

先设置环境变量,修改~/.bashrc,修改后source ~/.bashrc

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

hadoop的配置文件在etc/hadoop下面,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。

修改core-site.xml,增加两个property,有些人会把ip写成localhost,但个人建议使用ip会比较有保证,不会那么容易出错。

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://10.1.2.108:9000</value>
        <description>NameNode URI</description>
    </property>
</configuration>

修改hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>
</configuration>

然后执行格式化

[hadoop@root@ZhaoWei_10_1_2_108 hadoop]$ hdfs namenode -format
16/11/01 21:50:08 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = localhost/127.0.0.1
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 2.7.3
*****
****

成功的话,会看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若为 “Exitting with status 1” 则是出错,出错的话可以尝试删掉tmp文件夹然后重新来,还不行就只能重新检查配置文件有无错误。

接着启动NameNode,SecondNameNode,DataNode进程

[hadoop@root@ZhaoWei_10_1_2_108 hadoop]$ start-dfs.sh   
16/11/01 21:53:18 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting namenodes on [localhost]
localhost: starting namenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-namenode-root@ZhaoWei_10_1_2_108.out
localhost: starting datanode, logging to /usr/local/hadoop/logs/hadoop-hadoop-datanode-root@ZhaoWei_10_1_2_108.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-secondarynamenode-root@ZhaoWei_10_1_2_108.out
16/11/01 21:53:34 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

注意这里的0.0.0.0,跟上面的ssh配置呼应。因为伪分布式不用配置SecondNameNode,所以使用默认的host是0.0.0.0:322。如果此时ssh免密登陆失效则会要求输入密码,那就重新配置ssh免密登陆或者输入密码。有时候会提示输入yes,输入即可。

启动完成后根据 jps 命令来判断是否启动成功。如果jps命令未找到则运行


[hadoop@root@ZhaoWei_10_1_2_108 hadoop]$ alias jps='/usr/local/java1.8.0_40/bin/jps'
[hadoop@root@ZhaoWei_10_1_2_108 hadoop]$ jps
54004 Jps
54871 NameNode
55800 NodeManager55023 DataNode

上面四个进程缺一不可,缺少的话可以重新检查配置或者谷歌搜索,当然也可以查看日志,start-dfs.sh的输出有说明日志的路径,/usr/local/hadoop/logs下的.log文件

[hadoop@root@ZhaoWei_10_1_2_108 hadoop]$ tail logs/hadoop-hadoop-secondarynamenode-root@ZhaoWei_10_1_2_108.log 
        at java.lang.reflect.Method.invoke(Method.java:497)
        at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:191)
        at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102)
        at com.sun.proxy.$Proxy11.rollEditLog(Unknown Source)
        at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.doCheckpoint(SecondaryNameNode.java:512)
        at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.doWork(SecondaryNameNode.java:395)
        at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode$1.run(SecondaryNameNode.java:361)
        at org.apache.hadoop.security.SecurityUtil.doAsLoginUserOrFatal(SecurityUtil.java:415)
        at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.run(SecondaryNameNode.java:357)

如果发现DataNode未启动则一般情况下是id不一样,停掉dfs删掉tmp目录然后重新format即可。如果是网络问题,则关闭防火墙:

1) 重启后生效
开启: chkconfig iptables on
关闭: chkconfig iptables off
2) 即时生效,重启后失效
开启: service iptables start
关闭: service iptables stop

在开启了防火墙时,做如下设置,开启相关端口,
修改/etc/sysconfig/iptables 文件,添加以下内容:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 322 -j ACCEPT

如果遇到hadoop datanode Does not contain a valid host:port authority导致的DataNode未启动则一般是hostname的问题,hostname有时候不能包含‘.’ '/' '_'等非法字符的主机名。修改/etc/hosts的hostname,然后hostname newhostname,接着删掉tmp,重新format,重新start-dfs.sh

  三、命令测试

  由于DataNode出问题之后,我把hostname修改为了master,之后的命令会是下面这样

[root@master ~]# 
[hadoop@master ~]$ 

  上面运行的单机例子读取和写入的都是本地的文件系统,而伪分布式读取写入的是HDFS上的数据。

[hadoop@master ~]$ hdfs dfs -mkdir /user/hadoop  # 新建目录作为个人账号目录
[hadoop@master ~]$ hdfs dfs -mkdir input  # 新建
[hadoop@master
~]$ hdfs dfs -ls 16/11/03 00:10:18 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Found 1 items drwxr-xr-x - hadoop supergroup 0 2016-11-03 00:06 input
[hadoop@master
~]$ hdfs dfs -ls /user/hadoop 16/11/03 00:10:42 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Found 1 items drwxr-xr-x - hadoop supergroup 0 2016-11-03 00:06 /user/hadoop/input
[hadoop@master
~]$ hdfs dfs -ls -R / 16/11/03 00:14:39 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable drwxr-xr-x - hadoop supergroup 0 2016-11-03 00:14 /user drwxr-xr-x - hadoop supergroup 0 2016-11-03 00:14 /user/hadoop drwxr-xr-x - hadoop supergroup 0 2016-11-03 00:06 /user/hadoop/input

 在运行hadoop伪分布式实例之前我们先删掉之前单机模式产生的output文件夹,然后开始运行

[hadoop@master hadoop]$ hdfs dfs -put *.txt input
16/11/03 09:58:32 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
[hadoop@master hadoop]$ hdfs dfs
-ls input 16/11/03 09:58:44 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Found 3 items -rw-r--r-- 1 hadoop supergroup 84854 2016-11-03 09:58 input/LICENSE.txt -rw-r--r-- 1 hadoop supergroup 14978 2016-11-03 09:58 input/NOTICE.txt -rw-r--r-- 1 hadoop supergroup 1366 2016-11-03 09:58 input/README.txt
[hadoop@master hadoop]$ hadoop jar share
/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output 'SOFT[A-Z]+'
[hadoop@master hadoop]$ hdfs dfs -ls output 16/11/03 09:59:47 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Found 2 items -rw-r--r-- 1 hadoop supergroup 0 2016-11-03 09:59 output/_SUCCESS -rw-r--r-- 1 hadoop supergroup 12 2016-11-03 09:59 output/part-r-00000
[hadoop@master hadoop]$ ls output ls: cannot access output: No such file or directory
[hadoop@master hadoop]$ hdfs dfs
-cat output/part-r-00000 16/11/03 10:00:23 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 49 SOFTWARE
[hadoop@master hadoop]$ hdfs dfs -get output ./output  # 将文件夹取回到本地文件系统
16/11/03 10:03:18 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
[hadoop@master hadoop]$
ls output/ part-r-00000 _SUCCESS [hadoop@master hadoop]$ cat output/part-r-00000 49 SOFTWARE [hadoop@master hadoop]$

注意运行 Hadoop 程序时,程序指定的输出目录(如 output)不能存在,否则会提示错误,因此运行前需要先删除输出目录

  四、启动YARN

   hadoop2使用了新的MapReduce框架(MapReduce V2,也称为 YARN,Yet Another Resource Negotiator),YARN是从MapReduce中分离出来的,负责资源管理与任务调度。YARN 运行于 MapReduce 之上,提供了高可用性、高扩展性。为什么要升级到YARN,可以参考这篇文章《Hadoop 新 MapReduce 框架 Yarn 详解》。这里只引用文章的一点内容,有兴趣的读者可直接打开文章查看更多内容:

原框架的问题逐渐浮出水面,主要的问题集中如下:
1、JobTracker 是 Map-reduce 的集中处理点,存在单点故障。
2、JobTracker 完成了太多的任务,造成了过多的资源消耗,当 map-reduce job 非常多的时候,会造成很大的内存开销,潜在来说,也增加了 JobTracker fail 的风险,这也是业界普遍总结出老 Hadoop 的 Map-Reduce 只能支持 4000 节点主机的上限。
3、在 TaskTracker 端,以 map/reduce task 的数目作为资源的表示过于简单,没有考虑到 cpu/ 内存的占用情况,如果两个大内存消耗的 task 被调度到了一块,很容易出现 OOM。
4、在 TaskTracker 端,把资源强制划分为 map task slot 和 reduce task slot, 如果当系统中只有 map task 或者只有 reduce task 的时候,会造成资源的浪费,也就是前面提过的集群资源利用的问题。
5、源代码层面分析的时候,会发现代码非常的难读,常常因为一个 class 做了太多的事情,代码量达 3000 多行,,造成 class 的任务不清晰,增加 bug 修复和版本维护的难度。
6、从操作的角度来看,现在的 Hadoop MapReduce 框架在有任何重要的或者不重要的变化 ( 例如 bug 修复,性能提升和特性化 ) 时,都会强制进行系统级别的升级更新。更糟的是,它不管用户的喜好,强制让分布式集群系统的每一个用户端同时更新。这些更新会让用户为了验证他们之前的应用程序是不是适用新的 Hadoop 版本而浪费大量时间。

Yarn 框架相对于老的 MapReduce 框架什么优势呢?我们可以看到:
1、这个设计大大减小了 JobTracker(也就是现在的 ResourceManager)的资源消耗,并且让监测每一个 Job 子任务 (tasks) 状态的程序分布式化了,更安全、更优美。
2、在新的 Yarn 中,ApplicationMaster 是一个可变更的部分,用户可以对不同的编程模型写自己的 AppMst,让更多类型的编程模型能够跑在 Hadoop 集群中,可以参考 hadoop Yarn 官方配置模板中的 mapred-site.xml 配置。
3、对于资源的表示以内存为单位 ( 在目前版本的 Yarn 中,没有考虑 cpu 的占用 ),比之前以剩余 slot 数目更合理。
4、老的框架中,JobTracker 一个很大的负担就是监控 job 下的 tasks 的运行状况,现在,这个部分就扔给 ApplicationMaster 做了,而 ResourceManager 中有一个模块叫做 ApplicationsMasters( 注意不是 ApplicationMaster),它是监测 ApplicationMaster 的运行状况,如果出问题,会将其在其他机器上重启。
5、Container 是 Yarn 为了将来作资源隔离而提出的一个框架。这一点应该借鉴了 Mesos 的工作,目前是一个框架,仅仅提供 java 虚拟机内存的隔离 ,hadoop 团队的设计思路应该后续能支持更多的资源调度和控制 , 既然资源表示成内存量,那就没有了之前的 map slot/reduce slot 分开造成集群资源闲置的尴尬情况。

  接下来开始修改配置文件。

[hadoop@master hadoop]$ cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml

修改etc/hadoop/mapred-site.xml,增加property

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

修改etc/hadoop/yarn-site.xml,增加property

    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

启动YARN

[hadoop@master hadoop]$ start-yarn.sh 
starting yarn daemons
starting resourcemanager, logging to /usr/local/hadoop/logs/yarn-hadoop-resourcemanager-master.out
localhost: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-hadoop-nodemanager-master.out
[hadoop@master hadoop]$ jps
51616 NameNode 51771 DataNode 51995 SecondaryNameNode 3421 ResourceManager 3550 NodeManager 3919 Jps

可以发现,比之前多了两个进程 NodeManager, ResourceManager。启动 YARN 之后,运行实例的方法还是一样的,仅仅是资源管理方式、任务调度不同。有兴趣的读者可以观察日志对比变化。

注意在单机上启动YARN可能会发现测试实例的运行速度变慢了(可以看出单机伪分布式并不适合使用YARN),这时候如果要关闭YARN直接启动伪分布式平台则需要将mapred-site.xml删掉,保留原来的mapred-site.xml.template 即可。停止YARN命令如下

[hadoop@master hadoop]$ stop-yarn.sh
stopping yarn daemons
stopping resourcemanager
localhost: stopping nodemanager
no proxyserver to stop
[hadoop@master hadoop]$ jps
51616 NameNode 7236 Jps 51771 DataNode 51995 SecondaryNameNode

如果要关闭hadoop伪分布式平台,则先停止YARN,再停止NameNode

hadoop@master hadoop]$ stop-yarn.sh
stopping yarn daemons
stopping resourcemanager
localhost: stopping nodemanager
no proxyserver to stop
、
[hadoop@master hadoop]$ jps
51616 NameNode
7236 Jps
51771 DataNode
51995 SecondaryNameNode

[hadoop@master hadoop]$ stop-dfs.sh 
16/11/03 10:36:37 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Stopping namenodes on [localhost]
localhost: stopping namenode
localhost: stopping datanode
Stopping secondary namenodes [0.0.0.0]
0.0.0.0: stopping secondarynamenode
16/11/03 10:36:56 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

[hadoop@master hadoop]$ jps
9463 Jps

重新启动并查看运行进程和集群状态信息

[hadoop@master hadoop]$ start-dfs.sh 
[hadoop@master hadoop]$ start-yarn.sh
[hadoop@master hadoop]$ jps
12178 ResourceManager
12690 Jps
11540 NameNode
11943 SecondaryNameNode
12312 NodeManager
11707 DataNode
[hadoop@master hadoop]$ hdfs dfsadmin -report 

  五、web查看

由于我没有使用web查看过,所以不知道网页查看是长什么样子的。但端口应该是50030和和50070。可以打开页面访问http://your ip:50030,http://your ip:50070

 

至此,伪分布式hadoop平台搭建完成。要了解更多请参考官网文档

原创文章,转载请备注原文地址 http://www.cnblogs.com/lxmhhy/p/6006252.html

知识交流讨论请加qq群:180214441。谢谢合作

posted @ 2016-11-01 22:03  RunningPower  阅读(1054)  评论(2编辑  收藏  举报