Alex 的 Hadoop 菜鸟教程: 第3课 Hadoop 安装教程 – 非HA方式 (一台服务器) – 我可以接受失败,但我不能接受放弃。–迈克尔 乔丹 – 博客频道 – CSDN.NET

原帖地址: http://blog.csdn.net/nsrainbow/article/details/36629741

接上一个教程:http://blog.csdn.net/nsrainbow/article/details/36629339

本教程是在 Centos6 下使用yum来安装 CDH5 版本的 hadoop 的教程。 如果没有添加yum源的请参考上一个教程

:http://blog.csdn.net/nsrainbow/article/details/36629339

Hadoop架构图

  1. NameNode、DataNode和Client

    NameNode可以看作是分布式文件系统中的管理者,主要负责管理文件系统的命名空间、集群配置信息和存储块的复制等。NameNode会将文件系统的Meta-data存储在内存中,这些信息主要包括了文件信息、每一个文件对应的文件块的信息和每一个文件块在DataNode的信息等。

    DataNode是文件存储的基本单元,它将Block存储在本地文件系统中,保存了Block的Meta-data,同时周期性地将所有存在的Block信息发送给NameNode。

    Client就是需要获取分布式文件系统文件的应用程序。

  2. 文件写入

    Client向NameNode发起文件写入的请求。

    NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。

    Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。

  3. 文件读取

    Client向NameNode发起文件读取的请求

    NameNode返回文件存储的DataNode的信息。

    Client读取文件信息。

开始安装非HA模式

1. 添加库key

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. $ sudo rpm –import http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/RPM-GPG-KEY-cloudera  

2. 安装CDH5

2.1 安装Resource Manager host

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. $ sudo yum clean all  
  2. $ sudo yum install hadoop-yarn-resourcemanager -y  

2.2 安装 NameNode host

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. $ sudo yum clean all  
  2. $ sudo yum install hadoop-hdfs-namenode -y  

2.3 安装 Secondary NameNode host

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. $ sudo yum clean all  
  2. $ sudo yum install hadoop-hdfs-secondarynamenode -y  

2.4 安装 nodemanager , datanode, mapreduce (官方说明是在除了 Resource Manager以外的机子上装这些,但是我们现在就一台机子,所以就在这台机子上装)

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. $ sudo yum clean all  
  2. $ sudo yum install hadoop-yarn-nodemanager hadoop-hdfs-datanode hadoop-mapreduce -y  

2.5 安装 hadoop-mapreduce-historyserver hadoop-yarn-proxyserver (官方说是在cluster中挑一台做host,但是我们就一台,就直接在这台上装)

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. $ sudo yum clean all  
  2. $ sudo yum install hadoop-mapreduce-historyserver hadoop-yarn-proxyserver -y  

2.6 安装 hadoop-client (用户连接hadoop的客户端,官方说在客户端装,我们就直接在这台上装)

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. $ sudo yum clean all  
  2. $ sudo yum install hadoop-client -y  

3. 部署CDH

3.1 配置计算机名(默认是localhost)

先看看自己的hostname有没有设置

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. $ sudo vim /etc/sysconfig/network  
  2. HOSTNAME=localhost.localdomain  

如果HOSTNAME是 localhost.localdomain的话就改一下

HOSTNAME=myhost.mydomain.com

然后再运行下,保证立即生效

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. $ sudo hostname myhost.mydomain.com  

检查一下是否设置生效

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. $ sudo uname -a  

3.2 修改配置文件

先切换到root用户,免得每行命令之前都加一个sudo,所以以下教程都是用root角度写的

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. $ sudo su –  
  2. $ cd /etc/hadoop/conf  
  3. $ vim core-site.xml  

在 <configuration>…</configuration> 中增加

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. <property>  
  2.     <name>fs.defaultFS</name>  
  3.     <value>hdfs://myhost.mydomain.com:8020</value>  
  4. </property>  

编辑hdfs-site.xml

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. $ vim hdfs-site.xml  

在 <configuration>…</configuration> 中添加

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. <property>  
  2.  <name>dfs.permissions.superusergroup</name>  
  3.  <value>hadoop</value>  
  4. </property>  

3.3 配置存储文件夹

在 namenode 机子上配置 hdfs.xml 用来存储name元数据(我们只有一台机,所以既是namenode又是datanode)

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. $ vim hdfs-site.xml  

修改dfs.name.dir 为 dfs.namenode.name.dir(dfs.name.dir已经过时),并修改属性值,一般来说我们的 /data 或者 /home/data 都是挂载大硬盘数据用的,所以把存储文件夹指向这个路径里面的文件夹比较较好

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. <property>  
  2.      <name>dfs.namenode.name.dir</name>  
  3.      <value>file:///data/hadoop-hdfs/1/dfs/nn</value>  
  4.   </property>  

在 datanode上配置 hdfs.xml 用来存储实际数据(我们只有一台机,所以既是namenode又是datanode)

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. $ vim hdfs-site.xml  

增加dfs.datanode.data.dir(dfs.data.dir已经过时)配置

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. <property>  
  2.      <name>dfs.datanode.data.dir</name>  
  3.      <value>file:///data/hadoop-hdfs/1/dfs/dn,file:///data/hadoop-hdfs/2/dfs/dn</value>  
  4.   </property>  

建立这些文件夹

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. $ mkdir -p /data/hadoop-hdfs/1/dfs/nn  
  2. $ mkdir -p /data/hadoop-hdfs/1/dfs/dn  
  3. $ mkdir -p /data/hadoop-hdfs/2/dfs/dn  

修改文件夹用户

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. $ chown -R hdfs:hdfs /data/hadoop-hdfs/1/dfs/nn /data/hadoop-hdfs/1/dfs/dn /data/hadoop-hdfs/2/dfs/dn  

修改文件夹权限

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. $ chmod 700 /data/hadoop-hdfs/1/dfs/nn  

3.4 格式化namenode

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. $ sudo -u hdfs hdfs namenode -format  

3.5 配置 Secondary NameNode

在hdfs-site.xml中加入

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. <property>  
  2.   <name>dfs.namenode.http-address</name>  
  3.   <value>0.0.0.0:50070</value>  
  4.   <description>  
  5.     The address and the base port on which the dfs NameNode Web UI will listen.  
  6.   </description>  
  7. </property>  

3.6 启动hadoop

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. $ for x in `cd /etc/init.d ; ls hadoop-*` ; do sudo service $x start ; done  
  2. Starting Hadoop nodemanager:                               [  OK  ]  
  3. starting nodemanager, logging to /var/log/hadoop-yarn/yarn-yarn-nodemanager-xmseapp03.ehealthinsurance.com.out  
  4. Starting Hadoop proxyserver:                               [  OK  ]  
  5. starting proxyserver, logging to /var/log/hadoop-yarn/yarn-yarn-proxyserver-xmseapp03.ehealthinsurance.com.out  
  6. Starting Hadoop resourcemanager:                           [  OK  ]  
  7. starting resourcemanager, logging to /var/log/hadoop-yarn/yarn-yarn-resourcemanager-xmseapp03.ehealthinsurance.com.out  
  8. Starting Hadoop datanode:                                  [  OK  ]  
  9. starting datanode, logging to /var/log/hadoop-hdfs/hadoop-hdfs-datanode-xmseapp03.ehealthinsurance.com.out  
  10. Starting Hadoop namenode:                                  [  OK  ]  
  11. starting namenode, logging to /var/log/hadoop-hdfs/hadoop-hdfs-namenode-xmseapp03.ehealthinsurance.com.out  
  12. Starting Hadoop secondarynamenode:                         [  OK  ]  
  13. starting secondarynamenode, logging to /var/log/hadoop-hdfs/hadoop-hdfs-secondarynamenode-xmseapp03.ehealthinsurance.com.out  
  14. …  

都成功后用jps看下

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. $jps  
  2. 17033 NodeManager  
  3. 16469 DataNode  
  4. 17235 ResourceManager  
  5. 17522 JobHistoryServer  
  6. 16565 NameNode  
  7. 16680 SecondaryNameNode  
  8. 17593 Jps  

4 客户端测试

打开你的浏览器输入 http://<hadoop server ip>:50070

如果看到

Hadoop Administration

DFS Health/Status

这样的字样就成功进入了hadoop的命令控制台

来源URL:http://blog.csdn.net/nsrainbow/article/details/36629741