《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,之后再重新转写。
-
/* id.pig */
-
-
A = load 'passwd' using PigStorage(':'); -- load the passwd file
-
B = foreach A generate $0 as id; -- extract the user IDs
-
store B into ‘id.out’; -- write the results to a file name id.out
2)Hive
Hive是数据仓库工具,可查询和管理驻留在分布式存储上的大数据集。
-
CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING);
-
LOAD DATA LOCAL INPATH './examples/files/kv1.txt' OVERWRITE INTO TABLE pokes;
3)Jaql
Jaql:来自IBM BigInsights的JSON语言。
-
//
-
// Bind to variable
-
$log = read(hdfs(“log”));
-
$user = read(hdfs(“user”));
-
//
-
// Query 1: filter and transform
-
$log
-
-> filter $.from == 101
-
-> transform { mandatory: $.msg };
-
// result …
-
[
-
{
-
"mandatory": "Hello, world!"
-
}
-
]
二、总结
你安装Hadoop后,你就得到了一个HDFS和MapReduce引擎。要查询数据,你需要开发自己的代码,可使用像Pig、Hive、Jaql之类的语言来处理MapReduce。这些语言的查询总是会被转换成MapReduce实现,你无需担忧MapReduce的实现,这就是为什么它很快,以及为什么你处理的数据分布在上千台机器的原因。
注:本文采用意译,有些无关的口水话省略掉了。
阅读(3156) | 评论(0) | 转发(1) |