Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4024553
  • 博文数量: 626
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 11080
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-23 13:08
文章分类

全部博文(626)

文章存档

2015年(72)

2014年(48)

2013年(506)

分类: HADOOP

2013-12-11 22:20:15

《Hadoop五分钟入门指南》
原文见:http://blog.josedacruz.com/2013/12/09/hadoop-in-5-minutes-for-beginners/#.Uqhs3_Q6Cjt
如果你有大量的数据(TB级),而且这些数据到处分散,且有些数据是结构化的,有些数据不是。你想查询这些数据,你或许在想,“我需要力量来组织和查询这些数据”。是的,你需要Hadoop。
一、什么是Hadoop?
Apache Hadoop软件库是一个框架,它可以对大数据集使用简单的编程模型做跨集群的分布式处理。Hadoop在设计上可以从单服务器节点扩展到成千上万的服务器节点,每个节点都能提供本地计算和存储。
HDFS——分布式文件系统,MapReduce模式的实现。
HDFS是一个文件系统,分布在系统中的所有机器上,但是你只能把它视为单个的文件系统,因为它是分布式的、跨主机的。那么,我的本地文件系统是怎样的?HDFS工作于本地文件系统之上。
MapReduce是一个模式,处理大数据集(当然你也可以用于处理小数据集,因为MapReduce只是一个模式,而不是产品,它可以使用任意编程语言来实现)。Hadoop使用MapReduce模式运行数据集上的查询。(它使用任务Task、工作Job等处理你的请求,而且总是使用MapReduce模式执行任务)。
那么,现在你有了一个分布式文件系统,以及一个任务和工作的引擎以运行采用MapReduce模式实现的应用程序。是的,是这样的。
所以,我怎样查询所有的数据呢?好吧,你可以用任意语言实现应用程序,通常使用Java控制任务Task、工作Job,用Map和Reduce函数实现MapReduce模式。有许多工作要做。你还可以使用其他的大数据技术,帮助你实现这些在数据集上的查询和处理操作,这些技术通常是基于某个特定平台或编程语言的。
1)Pig
Pig是一个基于Apache Hadoop的大规模数据分析平台,它提供的SQL-LIKE语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。Pig为复杂的海量数据并行计算提供了一个简单的操作和编程接口,使用者可以透过Python或者JavaScript编写Java,之后再重新转写。

点击(此处)折叠或打开

  1. /* id.pig */

  2. A = load 'passwd' using PigStorage(':'); -- load the passwd file
  3. B = foreach A generate $0 as id; -- extract the user IDs
  4. store B into ‘id.out’; -- write the results to a file name id.out
2)Hive
Hive是数据仓库工具,可查询和管理驻留在分布式存储上的大数据集。

点击(此处)折叠或打开

  1. CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING);
  2. LOAD DATA LOCAL INPATH './examples/files/kv1.txt' OVERWRITE INTO TABLE pokes;
3)Jaql
Jaql:来自IBM BigInsights的JSON语言。

点击(此处)折叠或打开

  1. //
  2. // Bind to variable
  3. $log = read(hdfs(“log”));
  4. $user = read(hdfs(“user”));
  5. //
  6. // Query 1: filter and transform
  7. $log
  8. -> filter $.from == 101
  9. -> transform { mandatory: $.msg };
  10. // result …
  11. [
  12. {
  13. "mandatory": "Hello, world!"
  14. }
  15. ]

二、总结
你安装Hadoop后,你就得到了一个HDFS和MapReduce引擎。要查询数据,你需要开发自己的代码,可使用像Pig、Hive、Jaql之类的语言来处理MapReduce。这些语言的查询总是会被转换成MapReduce实现,你无需担忧MapReduce的实现,这就是为什么它很快,以及为什么你处理的数据分布在上千台机器的原因。

注:本文采用意译,有些无关的口水话省略掉了。

阅读(3099) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~