Hadoop大数据平台架构与实践--基础篇

来源:互联网 发布:保险网络销售平台 编辑:程序博客网 时间:2024/05/16 11:23

Hadoop的前世今生


Google发布了3大技术:MapReduce、BigTable、 GFS。

这3大技术带来的革命性变化:

革命性的变化1: 成本降低,能用PC机,就不用大型机和高端存储。

革命性的变化2:软件容错硬件故障视为常态、通过软件保证可靠性

革命性的变化3:简化并行分布式计算,无需控制节点同步和数据交换

虽然这3大技术带来了巨大的革命性变化,但是Google只发表了相关的技术论文,没有开放源代码。

因此一个模仿Google大数据技术的开源实现来了。它就是是Hadoop。

Hadoop的功能与优势


Hadoop是一个开源+分布式存储+分布式计算平台。

Hadoop包括两个核心组成:

HDFS: 分布式文件系统,存储海量的数据

MapReduce: 并行处理框架,实现任务分解和调度

Hadoop 可以用来搭建大型数据仓库,PB级数据的存储、处理、分析统计等业务

Hadoop的优势在于:(1)高扩展(2)低成本(3)成熟的生态圈


Hadoop的生态系统及版本


 Hive  只需要写sql语句,hive就会转换成Hadoop任务去执行,降低使用Hadoop的门槛

 Habse 放弃事务特性,追求更高的扩展 。habse提供数据的随机读写和实时访问,实现对表数据的读写功能

zookeeper  监控Hadoop集群中每个节点的状态,管理集群的配置,维护节点等



Hadoop的安装


Step1 :准备Linux环境

租用云主机,阿里云,UnitedStack等

Step2 :安装JDK

我使用的是阿里云,安装jdk方法参考http://blog.csdn.net/ch717828/article/details/48395245 

Step3 :配置Hadoop

参考 http://blog.csdn.net/ch717828/article/details/48440173


HDFS中的基本概念




块(Block):HDFS的文件被分成块进行存储,HDFS块的默认大小是64MB。块是文件存储处理的逻辑单元

NameNode:NameNode是管理节点,存放文件元数据

(1)文件与数据块的映射表

(2)数据块与数据节点的映射表

DataNode:DataNode是HDFS的工作节点,存放数据块

HDFS体系结构


 HDFS的数据管理与容错



(1)每个数据块3个副本,分布在两个机架内的三个节点

(2)DataNode定期向NameNode发送心跳消息

(3)二级NameNode定期同步元数据映像文件和修改日志。NameNode发生故障时,备胎转正

HDFS读取文件的流程







 HDFS 特点




(1)数据冗余,硬件容错

(2)流式的数据访问

(3)适合存储大文件

(4)适合数据批量读写,吞吐量高

(5)适合一次写入多次读取,顺序读写。不支持多用户并发写相同文件

HDFS命令操作演示



hadoop fs -ls /

MapReduce原理



分而治之,一个大任务分成多个小的子任务(map),并行执行后,合并结果(reduce)

 MapReduce运行流程



Job & Task:一个Job可以分成多个map task和 reduce task

JobTracker:作业调度、分配任务、监控任务执行进度、监控TaskTracker的状态

TaskTracker:执行任务、汇报任务状态





MapReduce应用案例--WordCount单词计数










代码:….


在云服务器上,执行代码



编译

javac -classpath /usr/hadoop/hadoop-1.2.1/hadoop-core-1.2.1.jar:/usr/hadoop/hadoop-1.2.1/commmons-cli-1.2.jar -d word_count_class/ WordCount.java


打包

cd word_count_class

jar -cvf wordcount.jar *.class


创建输入和输出文件

cd ..

mkdir input

vim file1

内容为

hello world

hello hadoop

hadoop file system

hadoop java api

hello java

vim file2

内容为

new file

hadoop file

hadoop new world

hadoop free home

hadoop free school


将filhe1 和 file2提交至 hdfs中去

cd ..

hadoop fs -mkdir input_wordcount //hdfs中创建文件夹

hadoop fs -put input/* input_wordcount/   //将file1 和 file2提交至 hdfs中去


可以通过 hadoop fs -ls 命令查看 input_wordcount文件夹的位置


提交

hadoop jar word_count_class/wordcount.jar WordCount input_wordcount output_wordcount


查看结果

hadoop fs -ls output_wordcount  //查看结果文件所在位置 

hadoop fs -cat output_wordcount/part-r-00000 //打开文件




0 0