hadoop认识总结

一、对hadoop的基本认识 Hadoop是一个分布式系统基础技术框架,由Apache基金会所开发。利用hadoop,软件开发用户可以在不了解分布式底层细节的情况下,开发分布式程序,从而达到充分利用集群的威力高速运算和存储的目的。

Hadoop是根据google的三大论文作为基础而研发的,google的三大论文分别是:MapReduce、GFS和BigTable。因此,hadoop也因此被称为是

google技术的山寨版。不过这种“山寨版”却成了当下大数据处理技术的国际标准(因为它是世界上唯一一个做得相对完善而又开源的框架)。

Hadoop框架中最核心的设计就是:MapReduce和HDFS。MapReduce的思想是由Google的一篇论文所提及而被广为流传的,简单的一句话解释

MapReduce就是“任务的分解与结果的汇总”。HDFS是Hadoop分布式文件系统(Hadoop Distributed File System)的缩写,为分布式计算存储提供了底层支持。

MapReduce从它名字上来看就大致可以看出个缘由,两个动词Map和Reduce,“Map(展开)”就是将一个任务分解成为多个任务,“Reduce”就是将分解后多任务处理的结果汇总起来,得出最后的分析结果。这不是什么新思想,其实它的本质就是一种“分治法”的思想,把一个巨大的任务分割成许许多多的小任务单元,最后再将每个小任务单元的结果汇总,并求得最终结果。在分布式系统中,机器集群就可以看作硬件资源池,将并行的任务拆分,然后交由每一个空闲机器资源去处理,能够极大地提高计算效率,同时这种资源无关性,对于计算集群的扩展无疑提供了最好的设计保证。任务分解处理以后,那就需要将处理以后的结果再汇总起来,这就是Reduce要做的工作。

多任务、并行计算、云计算,这些词汇并不是新名词,在hadoop出现之前,甚至在google出现之前,就已经出现过分布式系统和分布式程序,hadoop新就新在它解决了分布式系统复杂的底层细节,程序员可以在不了解底层分布式细节的情况下编写高效的分布式程序,hadoop服务会自动将任务分配给不同的计算机节点,由这些节点计算最后汇总并处理计算结果。利用hadoop,程序作者可以将精力放在具体的业务逻辑上,而不是繁琐的分布式底层技术细节。另外,传统的分布式系统一般会利用若干台高性能的计算机,而hadoop则只需将大量普通的pc机连系在一起,组成一个分布式集群。

Hadoop 是一个能够对大量数据进行分布式处理的软件框架。但是 Hadoop 是以一种可靠、高效、可伸缩的方式进行处理的。Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。Hadoop 还是可伸缩的,能够处理 PB 级数据。此外,Hadoop 依赖于社区服务器,因此它的成本比较低,任何人都可以使用。

Hadoop带有用 Java 语言编写的框架,因此运行在 Linux 生产平台上是非常理想的。Hadoop 上的应用程序也可以使用其他语言编写,比如 C++。 Hadoop 有许多元素构成。其最底部是 Hadoop Distributed File System(HDFS),它存储 Hadoop 集群中所有存储节点上的文件。HDFS(对于本文)

的上一层是 MapReduce 引擎,该引擎由 JobTrackers 和 TaskTrackers 组成。

二、 Hadoop下几个项目构成

其中MapReduce和hdfs是hadoop的核心,在很多时候,说hadoop往往就是指MapReduce和hdfs,其它项目是与它相关的配合使用的项目。

hadoop认识总结

1、Hadoop Common :Hadoop体系最底层的一个模块,为Hadoop各子项目提供各种工具,如:配置文件和日志操作等。

2、HDFS:分布式文件系统,提供高吞吐量的应用程序数据访问,对外部客户机而言,HDFS 就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件,等等。但是 HDFS 的架构是基于一组特定的节点构建的,这是由它自身的特点决定的。这些节点包括 NameNode(仅一个),它在 HDFS 内部提供元数据服务;DataNode,它为 HDFS 提供存储块。由于仅存在一个 NameNode,因此这是 HDFS 的一个缺点(单点失败)。

存储在 HDFS 中的文件被分成块,然后将这些块复制到多个计算机中

(DataNode)。这与传统的 RAID 架构大不相同。块的大小(通常为 64MB)和复制的块数量在创建文件时由客户机决定。NameNode 可以控制所有文件操作。

HDFS

hadoop认识总结

内部的所有通信都基于标准的 TCP/IP 协议。

3、MapReduce :一个分布式海量数据处理的软件框架集计算集群,它的原理如下图所示。

hadoop认识总结

4、Avro :doug cutting主持的RPC项目,主要负责数据的序列化。有点类似Google的protobuf和Facebook的thrift。avro用来做以后hadoop的RPC,使hadoop的RPC模块通信速度更快、数据结构更紧凑。

5、Hive :类似CloudBase,也是基于hadoop分布式计算平台上的提供data warehouse的sql功能的一套软件。使得存储在hadoop里面的海量数据的汇总,即席查询简单化。hive提供了一套QL的查询语言,以sql为基础,使用起来很方便。

6、HBase :基于Hadoop Distributed File System,是一个开源的,基于列存储模型的可扩展的分布式数据库,支持大型表的存储结构化数据。

7、Pig :是一个并行计算的高级的数据流语言和执行框架 ,SQL-like语言,是在MapReduce上构建的一种高级查询语言,把一些运算编译进MapReduce模型的Map和Reduce中,并且用户可以定义自己的功能。

8、ZooKeeper :Google的Chubby一个开源的实现。它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

9、Chukwa :一个管理大型分布式系统的数据采集系统 由yahoo贡献。

10、Cassandra :无单点故障的可扩展的多主数据库

11、Mahout :一个可扩展的机器学习和数据挖掘库

三、hadoop的应用场景 Hadoop项目是Lucnce搜索引擎项目的一个部分而发展以来的,也就是说,它最初是为了解决搜索引擎领域里的海量数据处理问题而诞生的,由此也不难理解它的应用场景,它是专为处理海量数据而生的。

首先,什么是海量数据?1G算不算?10G算不算?可以明确的说,这个数量级的数据完全不能算是海量,hadoop是专门处理TB甚至PB级数据的。当数据量庞大到TB级它的作用太能明显体现。

1.在线旅游:目前全球范围内80%的在线旅游网站都是在使用Cloudera公司提供的Hadoop发行版,其中SearchBI网站曾经报道过的Expedia也在其中。

2. 移动数据:Cloudera运营总监称,美国有70%的智能手机数据服务背后都是由Hadoop来支撑的,也就是说,包括数据的存储以及无线运营商的数据处理等,都是在利用Hadoop技术。

3.电子商务:这一场景应该是非常确定的,eBay就是最大的实践者之一。国内的电商在Hadoop技术上也是储备颇为雄厚的。

4.能源开采:美国Chevron公司是全美第二大石油公司,他们的IT部门主管介绍了Chevron使用Hadoop的经验,他们利用Hadoop进行数据的收集和处理,其中这些数据是海洋的地震数据,以便于他们找到油矿的位置。

那么,哪些行业不适合使用hadoop呢? Hadoop的突出优点是利用较低性能的计算机,对海量数据的分布式处理,它的重点是对数据的处理、分析、挖掘。因此,对于那些需要大量事务处理,实时响应等应用时不适合的,例如,银行系统等。

四、认识总结

Hadoop实际上就是一个云计算或者说分布式计算的工具,mapreduce 是它的计算引擎,hdfs是 它的文件系统,而其它项目如hbase、hive等都是在它基础上与它配套使用的外围软件。

以上这些是我对hadoop技术的初步认识,除了对它的基本认识之外,我自己曾经按照网上和书上的说明,搭建过一个基本的hadoop环境,运行了里面的示例程序。至于更多的技术细节,尚未作深入了解。

 

第二篇:Hadoop搭建总结

Hadoop之集群搭建总结

Summershyn夏超俊

这是个人在参照网上一下文章,自己尝试搭建,并碰到一些困难和问题,最后终于成功之后的总结,希望可以对你有点帮助。

有三台机子

192.168.1.101 master

192.168.1.102 slave1

192.168.1.103 slave2

1. SSH:ubuntu server 版安装时可选择安装OpenSSH(若没装,则可以sudo apt-get install openssh)

2. JDK:虽然ubuntu有openjdk,但是还是感觉sun的好一些。把jdk-()-.bin拷到ubuntu下,例如放/home/ubuntu/下,命令:chmod 777 jdk-().bin赋予可执行权限。然后运行。等待….

安装完之后配置环境变量:向/etc/encironment文件中添加

JAVA_HOME=”/home/ubuntu/jdk1.6.0_27(视版本而定)”

PATH=“……….:$JAVA_HOME/bin”

CLASS_HOME=”$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar”(好像可不填) 配置环境变量得重启生效

3. 修改/etc/hosts使得各主机名与IP互相识别(master需要填写所有机器,slave只需要填写自己和master)

即一个如(192.168.1.101 master)ip与主机名的对子

4.下载hadoop:我是0.20.0版本的。并将hadoop-0.20.0更名为hadoop(为了方便) 5创建用户:在每个机器上都创建一个同名的用户(如:hadoop,因为用户名不统一的话,后面ssh无密码登录就很纠结了)

命令:sudo addgroup hadoop

sudo adduser –ingroup hadoop hadoop

6.配置ssh无密码登录

使用统一的用户hadoop,命令:ssh-keygen –t dsa –P ‘’ –f ~/.ssh/id_dsa

(这一步每台机子都要做)

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys (这一步只有master做)

再把生成的认证钥发给slave,命令:scp ~/.ssh/authorized_keys slave1:/home/hadoop/.ssh/ 这一步会提示输入hadoop@slave1的密码,以后就可以直接ssh slave1登录了

7.配置hadoop,这最好在windows下做好再把hadoop传到linux下

①配置hadoop/conf中的masters和slaves,masters填入master的主机名或IP,slaves填所有的slave的主机名或IP

②配置hadoop/conf中的hadoop-env.sh:加入如下代码:

export HADOOP_HOME=/home/hadoop/hadoop

export HADOOP_CONF_DIR=$HADOOP_HOME/conf

export PATH=$PATH:$HADOOP_HOME/bin

并将JAVA_HOME改成自己的JAVA_HOME即:/home/ubuntu/jdk1.6.0_27 ③配置hadoop/conf中的core-site.xml和hdfs-site.xml和mapred-site.xml

core-site.xml:

<configuration>

<property>

<name>hadoop.tep.dir</name>

<value>/home/hadoop/hadoop/hadooptmp</value>(在hadoop根目录下建文件夹hadooptmp) </property>

<property>

<name>fs.default.name</name>

<value>hdfs://master:9000</value>

</property>

</configuration>

hdfs-site.xml:

<configuration>

<property>

<name>dfs.name.dir</name>

<value>/home/hadoop/hadoop/NameData</value>(在hadoop根目录下建文件夹NameData) </property>

<property>

<name>dfs.permissions</name>

<value>false</value>

</property>

<property>

<name>dfs.replication</name>

<value>2</value>(副本个数,可以为1,2,3,视集群大小而定)

</property>

</configuration>

mapred-site.xml

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>192.168.1.101:9001</value>

</property>

</configuration>

8.将hadoop文件夹拷入每台linux的机子,放在hadoop用户文件夹下,即/home/hadoop/hadoop是hadoop目录

9.为每台机子的hadoop/bin文件下的所有文件分配可执行权限,命令:

chmod u+x bin/*

在master的hadoop根目录中执行:bin/start-all.sh,即启动了hdfs。 格式化hdfs:hadoop namenode –format

10.即完成安装hadoop,可以在浏览器中查看图形界面:

NameNode -

其中的master可以写成IP

JobTracker -

相关推荐