【读书笔记】大型分布式网站架构设计与实践专题(七)

@Hadoop项目介绍
Hadoop是一个提供可伸缩的,可信赖的分布式计算的开源项目,支持Google的MapReduce编程范式,能够将作业分割成许多小的任务,并将这些任务放到任何的集群节点上执行。用户可以在不了解分布式系统底层细节的情况下,充分利用集群的力量,开发分布式应用程序,实现大规模分布式并行(Paralel)计算,存储和管理海量数据。

Hadoop项目的核心是分布式文件系统(Hadoop Distributed File System,Hadoop分布式文件系统)和变成模型MapReduce,HDFS用来对海量的数据提供可靠性,高容错性,高可扩展性,高吞吐性的存储解决方案,而MapReduce则是一种用来处理海量数据的并行编程模型和计算框架,用于对大规模的数据集进行计算。

随着时间的推移和项目的发展,Hadoop的功能越来越强大,发展出一系列支撑分布式计算的关联项目,如前面提到的高性能分布式协作服务ZooKeeper,可伸缩的支持大表结构化存储的分布式数据库HBase,提供类SQL查询功能的数据仓库平台Hive,大规模分布式系统的数据收集系统Chukwa,海量数据并行计算的变成语言和执行框架Pig,可扩展的机器学习和数据挖掘库Mahout等等

1,HDFS
分布式文件系统并非传统意义上的文件系统,它工作在操作系统的用户控件,由应用程序来实现,因此并不依赖于底层文件系统的具体实现。分布式文件系统能够对分别在各个存储设备中的文件进行统一的管理,并且提供统一的读写访问接口。相对于传统的文件系统,它往往更像是一个抽象的实现,拥有自己独特的内容组织结构,从而保持了高容错,高可靠,高可扩展,低成本,高吞吐的特性。

HDFS是Hadoop项目所实现的一个分布式文件系统,它包括一个主/从(Master/Slave)的体系结构,集群拥有一个NameNode和一些DataNode,NameNode负责管理文件系统的命名空间,维护着每一个文件名称到对应的文件分块的映射,以及每一个文件分块对应的机器列表;DataNode则负责它们所在的物理节点上的存储管理。
分布式文件系统提供一组类似本地文件系统的访问接口,客户端从NameNode中获得组成该文件的数据块的位置列表,当查询到数据块存储在DataNode的具体位置后,客户端变直接从DataNode上读取文件数据,而不需要NameNode干预。

HDFS体系结构图如下:
hdfs-architecture

出于成本考虑,大部分分布式系统均是浇筑在廉价的PC服务器上,HDFS拥有较为完善的冗余备份和故障恢复机制。

2,MapReduce是一种处理海量数据的并行编程模型和计算框架,用于对大规模数据集进行并行计算,最早由Google在论文中提出,运行在Google的分布式文件系统GFS上,用来为全球亿万互联网网页构建搜索索引。
它采用“分而治之”的思想,将对大数据的操作分发给主节点管理的各个子节点来完成,然后通过汇总各个子节点的中间结果来得到最终结果。

MapReduce分为map和reduce两个阶段。
MapReduce一个任务的运行需要JobTracker和TaskTracker两类控制节点的配合完成

Hadoop环境搭建
Hadoop的版本选择很有讲究,不同的版本,功能和结构差异很大,很多甚至是不兼容的,并且Hbase,Hive版本也会与Hadoop的版本相关联。
Hadoop的主体是Java开发的,因此,安装Hadoop之前首先需要搭建Java环境,Hadoop支持单机和集群模式。

HDFS基本操作命令
HDFS Shell命令使用hadoop fs 的形式,并使用URL路径作为参数,URI格式是scheme://authority/path,对于HDFS,schema为hdfs,而对于本地文件系统,schema是file,其中schema和authority参数都是可选的。如果没有,则会使用配置中指定的默认schema。一个HDFS文件或目录,如/parent/child可以表示成hdfs://namenodehost/parent/child,或者更简洁的/parent/child

touchz,创建新文件
#hadoop fs -touchz /long/tmp/aa.file
在/long/tmp/目录下创建aa.file

MapReduce编写
1,map程序;2,reduce程序;3,执行MapReduce任务

Hive使用

@流式数据分析

Storm是一个开源的分布式实时计算系统

1,集群架构
Storm包含两个类型的节点,即管理节点(master node)和工作节点(worker node),管理节点上运行一个Nimbus后台进程,类似Hadoop的JobTracker,负责在集群中分发代码,分配任务给其他机器,监控集群状态等;每个工作节点上运行着一个叫做Supervisor的后台进程,它负责接收Nimbus分配给当前的节点任务,启动或者关闭响应的工作进程。
Nimbus和Supervisor之间的协调工作通过ZooKeeper来完成。

storm集群架构
Storm集群架构

Topology(拓扑结构,图谱)
Streams,Storm的一个核心抽象是steam(流),stream是一个没有边界的tuple(元件)序列,Storm提供的最基本的处理stream的原语是spout和blot,可以通过spout和bolt相应的接口来实现相应的业务逻辑处理。

@数据同步
联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果.

@离线数据同步
Sqoop是Apache下的一个开源同步工具,支持关系型数据到Hadoop的数据导入和导出功能,既能通过Sqoop将关系型数据库如MySQL,Oracle中的数据导入到HDFS,也能够通过Sqoop从HDFS中将数据同步回关系型数据库。Sqoop使用MapReduce来执行数据导入和导出任务,提升操作的并行效率和容错能力。
还有淘宝的开源数据同步工具DataX

@实时数据同步
通过Binary log进行数据同步

@数据报表
报表工具Highcharts

郑重声明:

1 本资源来源于互联网,资源的版权归资源原作者所持有,受《中华人民共和国著作权法》等相关法律保护。

2 由于无法和原作者取得联系,所以上传的部分资源无法先通过原作者的同意就分享给大家了,如本资源侵犯了您(原作者)的权益,请联系我们(微信号 xiaohaimei1989),我们会立马删除您的资源,并向您表达诚挚的歉意!

3 本站是一个公益型网站,分享资源的目的在于传播知识,分享知识,收取一点点打赏的辛苦费是用于网站的日常运营开支,并非用于商业用途。

4 本站资源只提供学习和参考研究使用,使用过后请在第一时间内删除。本站不承担资源被单位或个人商用带来的法律责任。

发表评论