Hadoop是Apache基金会下的一个开源分布式计算平台,可以充分利用集群的计算和存储能力,完成海量数据的处理。Hadoop采用分布式存储方式来提高读写速度和扩大存储容量;采用MapReduce整合分布式文件系统上的数据,保证高速分析处理数据;与此同时还采用存储冗余数据来保证数据的安全性。经过几年的快速发展,Hadoop现在已经发展为包含多个相关项目的软件生态系统。狭义的Hadoop核心只包括Hadoop Common、Hadoop HDFS和Hadoop MapReduce三个子项目。而如今的Hadoop软件生态圈还包括 Avro、ZooKeeper、Hive、Pig和Hbase等项目、构建在这些项目之上,面向具体领域、应用的Machout、X-Rime、Crossbow和Ivory等项目,以及Chukwa、Flume、Sqoop、Oozie和Karmasphere等数据交换、工作流和开发环境这样的外围支撑系统。
Hadoop项目及其结构
Common
Common是为Hadoop其他子项目提供支持的常用工具,它主要包括FileSystem、PRC和串行化库。它们为搭建云计算环境提供基本的服务以及在该平台上的软件开发提供所需的API。
Avro
一种支持高效、跨语言的RPC以及永久存储数据的序列化系统。其功能如下:
a.提供丰富的数据结构类型、快速可压缩的二进制数据格式
b.存储持久性数据的文件集
c.远程调用RPC的功能和简单的动态语言集成功能。
MapReduce
分布式数据处理模型和执行环境,运行于大型商用机集群。
详细介绍请看文章
HDFS
分布式文件系统,运行于大型商用机集群
Pig
一种数据流语言和运行环境,用以检索非常大的数据集。Pig运行在MapReduce和HDFS的集群上。
Hive
一个分布式、按列存储的数据仓库。Hive管理HDFs中存储的数据,并提供基于SQL的查询语言(由运行时引擎翻译成MapReduce作业)用以查询数据。
HBase
一个分布式、按列存储数据库。HBase使用HDFS作为底层存储,同时支持MapReduce的批量式计算和点查询(随机读取)
ZooKeeper
一个分布式、可用性高的协调服务。ZooKeeper提供分布式锁之类的基本服务用于构建分布式应用。
Sqoop
在数据库和HDFS之间高效传输数据的工具。
Hadoop安装配置
Hadoop三种安装模式
单机模式
Hadoop完全运行在本地,不与其他节点交互,也不使用hadoop文件系统。
core-site.xml(Hadoop的核心配置文件)内容为空;
mapred-site.xml(Hadoop的守护进程配置文件)内容为空;
hdfs-site.xml(MapReduce的守护进程配置文件)内容均为空。
伪分布模式
主要步骤如下:(具体步骤详见文章)
步骤一:修改/etc/hosts,添加ip与主机名的映射:
192.168.195.140 Ubuntu1
步骤二:配置conf/core-site.xml文件
步骤三:配置conf/hdfs-site.xml文件:
步骤四:配置conf/mapred-site.xml文件:
分布式安装
步骤一:SSH配置无密码验证配置
mkdir .ssh
cd .ssh
ssh-keygen -t rsa ,然后一直按Enter键
cp id_rsa.pub authorized_keys
scp authorized_keys Ubuntu2:/home/username/.ssh
scp authorized_keys Ubuntu3:/home/username/.ssh
步骤二:修改hosts文件
在Ubuntu2和Ubuntu3中的该文件与Ubuntu1中的该文件内容相同。
步骤三:修改conf下面的master和salvers文件
master文件(SecondaryNameNode的机器列表)中配置:Ubuntu1;
slavers文件(DataNode和TaskTracker的机器列表)中的内容为:
Ubuntu1
Ubuntu2
Ubuntu3
在Ubuntu2和Ubuntu3中的该文件与Ubuntu1中的该文件内容相同。
hadoop的启动和验证
- 格式化分布式文件系统:
hadoop namenode -format - 在master机器上启动hadoop的守护进程:
start-all.sh - 在Ubuntu1、Ubuntu2和Ubuntu3上查看运行结果:
jpsHadoop集群测试
- Ubuntu1的Hadoop的home目录下新建文件test.txt;
- 在HDFS系统里创建一个input文件夹:
hadoop fs -mkdir /user/hadoop/input - 把创建好的test.txt文件上传到HDFS系统的input文件夹下:
hadoop fs -put /opt/hadoop-0.20.2/test.txt /user/hadoop/input - 运行hadoop-1.0.3-examples.jar下的单词统计案例:
cd /opt/hadoop-0.20.2
hadoop jar hadoop-examples-1.0.3.jar wordcount /user/hadoop/input/test.txt /user/hadoop/output