Hadoop 2.0:主流开源云架构(二)


二、Hadoop 2.0简述

(一)Hadoop 2.0由来

在这里插入图片描述
  工业界称Hadoop 1.X及其以前的版本(0.23.X除外)为Hadoop 1.0,称Hadoop 2.X及其以后版本为Hadoop 2.0。

在这里插入图片描述
  Hadoop 2.0提供分布式存储(HDFS)和分布式操作系统(Yarn)两大功能软件包。

  将Hadoop 2.0部署至集群后,通过调用Hadoop 2.0程序库,能够用简单的编程模型来处理分布在不同机器上的大规模数据集。由于采用客户-服务器模式,Hadoop 2.0很容易从一台机器扩展至成千上万台机器,并且每台机器都能提供本地计算存储和本地计算。考虑到集群中每台机器都可能会出问题(如硬件失效),Hadoop 2.0本身从设计上就在程序层规避了这些问题。

  Hadoop至少应当包含分布式存储和分布式计算两个模块,下面给出Hadoop1.0项目模块。
(1)Hadoop Common:联系HDFS和MapReduce的纽带,它一方面为另外两组件提供一些公用jar包,另一方面也是程序员访问其他两模块的接口。
(2)HDFS:Hadoop的分布式文件系统。主要提供分布式存储服务。
(3)Hadoop MapReduce:分布式计算框架。主要负责资源管理、任务调度和MapReduce算法实现。

(二)Hadoop 2.0相关项目

  Google云计算组件和Hadoop及其相关项目之间的对应关系:

Hadoop云计算系统 Google云计算系统
Hadoop HDFS Google GFS
Hadoop MapReduce Google MapReduce
HBase Google BigTable
ZooKeeper Google Chubby
Pig Google Sawzall

  近几年工业界围绕Hadoop进行了大量的外围产品开发,下图描述了各个产品项目之间的层次关系。

在这里插入图片描述

(三)Hadoop应用

在这里插入图片描述
1、构建大型分布式集群

  Hadoop最直接的应用就是构建大型分布式集群,提供海量存储和计算服务,像国内的中国移动“大云”、淘宝“云梯”等,都已是大型甚至超大型分布式集群。

2、数据仓库

  很多公司的log日志文件、其他半结构化业务数据并不适合存入关系型数据库,却特别适合存入半结构化的HDFS,然后应用其他工具(如Hive、Hbase)提供报表查询之类的服务。

3、数据挖掘

  大数据环境下的数据挖掘其实并没有太大改变,但大数据却给数据挖掘的预处理工具出了难题。受限于硬盘性能和内存大小限制,普通服务器读取1TB数据需要至少二十分钟,但Hadoop却是每台机器读取1/n TB,加上共享集群内存和CPU,实际处理时间何止n倍。

  Hadoop己广泛应用于分布式集群构建、数据存储、数据挖掘等领域。随着大数据和云计算时代的到来,相信Hadoop 的应用将更加广泛。

三、Hadoop 2.0部署

(一)部署综述

1、部署方式

(1)安装方式:

  • 传统解压包方式:烦琐易错;有助于读者深入理解Hadoop。
  • Linux标准方式:简单易用;隐藏了太多细节。

(2)部署环境:

  • 单机模式:不需要与其他节点交互,不需要使用HDFS,直接读写本地的文件系统。
  • 伪分布模式:在一台单机上运行,用不同的进程模仿分布式运行中的各类节点。
  • 分布式模式:在不同的机器上部署系统。

2、部署步骤
在这里插入图片描述
3、准备环境

(1)硬件环境

  由于分布式计算需要用到很多机器,部署时用户须提供多台机器,至于提供几台,须根据 “部署规划”确定。
  实际上,完全模式部署Hadoop时,最低需要两台机器(一个主节点,一个从节点),此外,硬件方面,每台机器最低要求有1GB内存,20GB硬盘空间。

(2)软件环境

在这里插入图片描述
  大量的实践证明,在Linux环境下使用Hadoop则更加稳定高效。须注意的是新装系统(CentOS)的机器不可以直接部署Hadoop,需要设置:修改机器名,添加域名映射,关闭防火墙,安装JDK。

【例2】 现有一台CentOS系统机器,且装机时用户名为joe,要求将此机器名修改为cMaster,添加域名映射,关闭防火墙,安装JDK。

① 修改机器名

[joe@localhost~]$ su-root                            #切换成root用户修改机器名
[root@localhost~]# vim /etc/sysconfig/network        #编辑存储机器名文件

  将“HOSTNAME=localhost.localdomain”中的“localhost.localdomain”替换成需要使用的机器名,按要求,此处应为cMaster,即此行内容为:

HOSTNAME=CMaster                                     #指定本机名为cMaster 

  注意重启机器后更名操作才会生效,用户须通过此命令修改集群中所有机器的机器名,重启后,本机将有自己唯一的机器名cMaster了。

② 添加域名映射

  首先使用如下命令查看本机IP地址,这里以cMaster机器为例。

[root@cMaster~]# ifconfig                            #查看cMaster机器IP地址

假如看到此机器的IP地址为“192.168.1.100”,机器名为cMaster,则域名映射应为:

192.168.1.100cMaster 

  接着编辑域名映射文件“/etc/hosts”,将上述内容加入此文件。

[root@cMaster~]# vim /etc/hosts                      #编辑域名映射文件

③ 关闭防火墙

  CentOS的防火墙iptables默认情况下会阻止机器间通信,编者建议系统管理员开启Hadoop使用的端口,也可以暂时关闭或永久关闭iptables(不建议),为简单起见, 永久关闭防火墙,其关闭命令如下(执行命令后务必重启机器才可生效):

[root@cMaster~]# chkconfig --level 35 iptables off              #永久关闭iptables,重启后生效

④ 安装JDK

  Hadoop部署前须安装JDK,而且Hadoop只能使用Oracle的1.6及以上版本的JDK,不能使用openjdk。用户须首先下载jdk-x.rpm包,如jdk-7u40-linux-x64.rpm。打开刚才己经安装的CentOS机器,将jdk-7u40-linux-x64.rpm复制至虚拟机下某位置, Termianl下执行(此方式安装的JDK无须配置java_home)如下命令:

[root@cMaster~]# java                                           #查看java是否安装
[root@cMaster~]# rpm -ivh /home/joe/jdk-7u40-linux-x64.rpm      #以root权限,rpm方式安装JDK
[root@cMaster~]# java                                           #验证java是否安装成功

4、关于Hadoop依赖软件

  • SSH只是给sbin/start-yarn.sh等几个start-x.shstop-x.sh脚本使用。
  • Hadoop本身是一堆Java代码,而Java代码并不依赖SSH。
  • 本节使用的Hadoop版本为稳定版Hadoop-2.2.0.tar.gz
  • CentOS版本为64位CentOS-6.5。
  • JDK版本为jdk-7u40-linux-x64.rpm

(二)传统解压包部署

【例3】 现有三台机器,且它们都刚装好64位CentOS-6.5,安装系统时用户名为joe,请按要求完成:
① 修改三台机器名为cMaster,cSlave0和cSlave1,并添加域名映射、关闭防火墙和安装JDK。
② 以cMaster作为主节点,cSlave0和cSlave1作为从节点,部署Hadoop。

(1)制定部署规划

  此Hadoop集群需三台机器(cMaster,cSlave0和cSlave1),其中cMaster作为主节点,cSlave0和cSlave1作为从节点。

(2)准备机器

  准备三台机器,它们可以是实体机也可以是虚拟机,若使用虚拟机。

(3)准备机器软件环境

  三台机器都要完成:修改机器名、添加域名映射、关闭防火墙和安装JDK。

(4)下载Hadoop

  谷歌搜索“Hadoop download”并下载,以joe用户身份,将Hadoop分别复制到三台机器上。

(5)解压Hadoop

  分别以joe用户登录三台机器,每台都执行如下命令解压Hadoop文件:

[joe@cMaster~]# tar -zxvf /home/joe/Hadoop-2.2.0.tar.gz
[joe@cSlave0~]# tar -zxvf /home/joe/Hadoop-2.2.0.tar.gz
[joe@cSlave1~]# tar -zxvf /home/joe/Hadoop-2.2.0.tar.gz

(6)配置Hadoop

  三台机器都要配置,且配置相同。

  首先,编辑文件“/home/joe/Hadoop-2.2.0/etc/Hadoop/Hadoop-env.sh”,找到如下行:

export JAVA_HOME=${JAVA_HOME}

将这行内容修改为:

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

这里的“/usr/java/jdk1.7.0_40”就是JDK安装位置,如果不同,读者须根据实际情况更改之,需要注意的是,三台机器都要执行此操作。

  其次,编辑文件“/home/joe/Hadoop-2.2.0/etc/Hadoop/core-site.xml”,并将如下内容嵌入此文件里configuration标签间,和上一个操作相同,三台机器都要执行此操作:

<property><name>hadoop.tmp.dir</name><value>/home/joe/cloudData</value></property>
<property><name>fs.defaultFS</name><value>hdfs://cMaster:8020</value></property>

编辑文件“/home/joe/Hadoop-2.2.0/etc/Hadoop/yarn-site.xml”,并将如下内容嵌入此文件里configuration标签间,同样,三台机器都要执行此操作:

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

  最后,将文件“/home/joe/Hadoop-2.2.0/etc/Hadoop/mapred-site.xml.template”重命名为“ /home/joe/Hadoop-2.2.0/etc/Hadoop/mapred-site.xml”,接着编辑此文件并将如下内容嵌入此文件的configuration标签间,同样,三台机器都要执行此操作:

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

(7)启动Hadoop

  首先,在主节点cMaster上格式化主节点命名空间:

[joe@cMaster~]# Hadoop-2.2.0/bin/hdfs namenode -format

  其次,在主节点cMaster上启动存储主服务namenode和资源管理主服务resourcemanager。

[joe@cMaster~]# hadoop-2.2.0/sbin/Hadoop-daemon.sh start namenode         #cMaster启动存储主服务
[joe@cMaster~]# hadoop-2.2.0/sbin/yarn-daemon.sh start resourcemanager        #启动资源管理主服务

  最后,在从节点上启动存储从服务datanode和资源管理从服务nodemanager,注意,CSlave0和cSlavel 这两台机器上都要执行,对应命令如下:

[joe@cSlave0~]# hadoop-2.2.0/sbin/Hadoop-daemon.sh start datanode        #cSlave0启动存储从服务
[joe@cSlave0~]# hadoop-2.2.0/sbin/yarn-daemon.sh start nodemanager       #cSlave0启动资源管理从服务
[joe@cSlave1~]# hadoop-2.2.0/sbin/Hadoop-daemon.sh start datanode        #cSlavel 启动存储从服务
[joe@cSlave1~]# hadoop-2.2.0/sbin/yarn-daemon.sh start nodemanager       #cSlavel启动资源管理从服务

(8)测试Hadoop

  可以分别在三台机器上执行如下命令,查看Hadoop服务是否己启动。

$ /usr/java/jdk1.7.0_40/bin/jps           #jps查看java进程
$ ps -ef | grep java                      #ps查看java进程

  会在cMaster上看到类似的如下信息:

3056 ResourceManager                      #资源管理主服务
2347 NameNode                             #存储主服务

  而cSlave0和cSlave1上看到类似的如下信息:

4021 DataNode                             #存储从服务
2761 NodeManager                          #资源管理从服务

  此外,还可以任选一台机器,如cMaster,打开CentOS默认浏览器Firefox,地址栏输入“cMaster:50070”,即可在Web界面看到HDFS相关信息;同理,地址栏输入“cMaster:8088”,即可在Web界面看到 Yarn相关信息。

  通过上述单机部署和集群部署,可以看出,Hadoop本身部署起来很简单,其大量工作其实都是前期的Linux环境配置,Hadoop安装只是解压、修改配置文件、格式化、启动和验证,关于Linux命令问题,请参考Linux专业书籍。

相关推荐

  1. 开发笔记No.20】中台架构的分类

    2024-06-11 17:06:02       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-11 17:06:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-11 17:06:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-11 17:06:02       87 阅读
  4. Python语言-面向对象

    2024-06-11 17:06:02       96 阅读

热门阅读

  1. 关于零拷贝的认知

    2024-06-11 17:06:02       32 阅读
  2. 租用服务器提供服务

    2024-06-11 17:06:02       32 阅读
  3. 整数反转(leetcode)

    2024-06-11 17:06:02       31 阅读
  4. 排查Spring条件注解未能生效的常见原因

    2024-06-11 17:06:02       29 阅读
  5. Linux 常用命令

    2024-06-11 17:06:02       28 阅读
  6. C#学习系列之UDP同端口发送与接收

    2024-06-11 17:06:02       35 阅读
  7. Web基础与HTTP协议

    2024-06-11 17:06:02       33 阅读
  8. 第三十篇-Ollama-TeslaP40-Ollama-Qwen2-57B等速度

    2024-06-11 17:06:02       36 阅读
  9. Comparison of manual and robotic cleaning

    2024-06-11 17:06:02       33 阅读
  10. 十种排序方法

    2024-06-11 17:06:02       29 阅读