分布式存储与分布式计算
一、高性能计算
目前自己知道的高性能计算工具,如下所示:
- Hadoop:Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
- Spark:Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。
- CUDA:CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。 开发人员现在可以使用C语言来为CUDA架构编写程序,C语言是应用最广泛的一种高级编程语言。所编写出的程序于是就可以在支持CUDA的处理器上以超高性能运行。CUDA3.0已经开始支持C++和FORTRAN。
- OpenCL:OpenCL(全称Open Computing Language,开放运算语言)是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景。
- MPICH:通过安装MPICH构建MPI编程环境,从而进行并行程序的开发。MPICH是MPI(Message-Passing Interface)的一个应用实现,支持最新的MPI-2接口标准,是用于并行运算的工具。
- MPI:MPI是一个跨语言的通讯协议,用于编写并行计算机。支持点对点和广播。MPI是一个信息传递应用程序接口,包括协议和和语义说明,他们指明其如何在各种实现中发挥其特性。MPI的目标是高性能,大规模性,和可移植性。MPI在今天仍为高性能计算的主要模型。主要的MPI-1模型不包括共享内存概念,MPI-2只有有限的分布共享内存概念。 但是MPI程序经常在共享内存的机器上运行。在MPI模型周边设计程序比在NUMA架构下设计要好因为MPI鼓励内存本地化。尽管MPI属于OSI参考模型的第五层或者更高,他的实现可能通过传输层的sockets和Transmission Control Protocol (TCP)覆盖大部分的层。大部分的MPI实现由一些指定惯例集(API)组成,可由C,C++,Fortran或者有此类库的语言比如C#,Java或者Python直接调用。MPI优于老式信息传递库是因为他的可移植性和速度。
- OpenMPI:OpenMPI是一种高性能消息传递库,最初是作为融合的技术和资源从其他几个项目(FT-MPI,LA-MPI,LAM/MPI以及PACX-MPI),它是MPI-2标准的一个开源实现,由一些科研机构和企业一起开发和维护。因此,OpenMPI能够从高性能社区中获得专业技术、工业技术和资源支持,来创建最好的MPI库。OpenMPI提供给系统和软件供应商、程序开发者和研究人员很多便利。易于使用,并运行本身在各种各样的操作系统,网络互连,以及一批/调度系统。
- OpenMP:OpenMp是由OpenMP Architecture Review Board牵头提出的,并已被广泛接受的,用于共享内存并行系统的多线程程序设计的一套指导性的编译处理方案(Compiler Directive)。OpenMP支持的编程语言包括C语言、C++和Fortran;而支持OpenMp的编译器包括Sun Compiler,GNU Compiler和Intel Compiler等。OpenMp提供了对并行算法的高层的抽象描述,程序员通过在源代码中加入专用的pragma来指明自己的意图,由此编译器可以自动将程序进行并行化,并在必要之处加入同步互斥以及通信。当选择忽略这些pragma,或者编译器不支持OpenMp时,程序又可退化为通常的程序(一般为串行),代码仍然可以正常运作,只是不能利用多线程来加速程序执行。
- GraphLab:GraphLab 是另一种有趣的MapReduce抽象实现,侧重机器学习算法的并行实现。GraphLab中,Map阶段定义了可以独立执行(在独立的主机上)的计算,Reduce阶段合并这些计算结果。
1、Hadoop生态系统的功能以及对应的开源工具,如下所示:
(1)海量数据怎么存,当然是用分布式文件系统——HDFS。
(2)数据怎么用呢,分析、处理MapReduce框架,让你通过编写代码来实现对大数据的分析工作。
(3)非结构化数据(日志)收集处理——Fuse、WebDAV、Chukwa、Flume和Scribe。
(4)数据导入HDFS中,RDBMS也可以加入HDFS的狂欢了——HIHO、Sqoop。
(5)MaoReduce太麻烦,用熟悉的方式操作Hadoop里的数据——Pig、Hive、Jaql。
(6)让你的数据可见——Drilldown、Intellicus。
(7)用高级语言管理你的任务流——Oozie、Cascading。
(8)Hadoop自己的监控管理工具——Hue、Karmasphere、Eclipse Plugin、Cacti、Ganglia。
(9)数据序列化处理与任务调度——Avro、ZooKeeper。
(10)更多构建在Hadoop上层的服务——Mahout、Elastic Map Reduce。
(11)OLTP存储系统——HBase。
(12)基于Hadoop的实时分析——Impala。
2、Hadoop常用项目介绍
(1)Apache Hadoop
Hadoop是一个大数据处理框架,它可用于从单台到数以千计的服务器集群的存储和计算服务。HadoopDistributed File System (HDFS) 提供了能够跨越多台计算机的大数据存储服务,而MapReduce则提供了一个并行处理的框架。它们的思想源自Google的MapReduce和Google File System(GFS)论文。详细参见:http://hadoop.apache.org/
(2)Apache Ambari
Ambari是一个对Hadoop集群进行监控和管理的基于Web的系统。目前已经支持HDFS,MapReduce,Hive,HCatalog,HBase,ZooKeeper,Oozie,Pig和Sqoop等组件。详细参见:http://ambari.apache.org/
(3)Apache Cassandra
Cassandra是一个分布式的NoSQL数据库。它基于multi-master模式,无单点失败,具有可扩展性。最早由Facebook开发用于存储收件箱等简单格式数据,后开源,被用于Twitter等知名网站。详细参见:http://cassandra.apache.org/
(4)Apache Hive
Hive是 一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类似SQL一样的查询语言HiveQL来管理这些数据。详细参见:http://hive.apache.org/
(5)Apache Pig
Pig是一个基于Hadoop的大数据分析平台,它提供了一个叫PigLatin的高级语言来表达大数据分析程序。详细参见:http://pig.apache.org/
(6)Apache Avro
Avro是一个数据序列化系统。它提供了丰富的数据结构类型,快读可压缩的二进制数据格式,存储持久数据的文件容器,远程过程调用等。详细参见:http://avro.apache.org/
(7)Apache Chukwa
Chukwa是一个用于监控大型分布式系统的的数据采集系统。它构建于Hadoop的HDFS和Map/Reduce框架之上,包含了一系列用于数据监控,分析和展示的灵活的强大工具集。它为日志系统提供了一整套解决方案。详细参见:http://chukwa.apache.org/
(8)Apache Drill
Drill是一个对大规模数据集进行交互式分析的分布式系统。它是Google的Gremel的开源实现。详细参见:http://incubator.apache.org/drill/
(9)Apache Flume
Flume是一个高可靠的分布式海量日志采集,聚合和传输系统。它来源于Cloudera开发的日志收集系统。详细参见:http://flume.apache.org/
(10)Apache HBase
HBase是一个分布式的,面向列的数据库。它基于Hadoop之上提供了类似BigTable的功能。详细参见:http://hbase.apache.org/
(11)Apache HCatalog
HCatalog是基于Hadoop的数据表和存储管理服务,提供了更好的数据存储抽象和元数据服务。详细参见:https://hive.apache.org/hcatalog/
(12)Apache Mahout
Mahout是一个机器学习领域的经典算法库,提供包括聚类,分类,推荐过滤,频繁子项挖掘等。详细参见:http://mahout.apache.org/
(13)Apache Oozie
Oozie是一个工作流调度系统,用于管理Hadoop里的job。它可以把多个Map/Reduce作业组合到一个逻辑工作单元来完成指定目标。详细参见:http://oozie.apache.org/
(14)Apache Sqoop
Sqoop是一个Hadoop和关系型数据库之间的数据转移工具。可将关系型数据库中的数据导入到Hadoop的HDFS中,也可将HDFS中的数据导进到关系型数据库中。详细参见:http://sqoop.apache.org/
(15)Apache ZooKeeper
ZooKeeper是一个针对大型分布式系统的可靠协调系统,提供包括配置维护,名字服务,分布式同步和组服务等功能。Hadoop的管理就是用的ZooKeeper。详细参见:http://zookeeper.apache.org
(16)Apache Giraph
Giraph是一个高可伸缩的迭代式图处理系统。它现在用于分析Facebook中的用户的社交关系。Giraph相当于Google图处理架构Pregel的开源版本。详细参见:http://giraph.apache.org/
(17)Apache Accumulo
Accumulo是一个可靠的,可伸缩的,高性能排序分布式的Key-Value存储解决方案。它基于Google的BigTable设计思路。详细参见:http://accumulo.apache.org/
(18)Apache S4
S4是一个可扩展的,分布式的流数据实时处理框架,最早由Yahoo开发并开源。与Twitter的Storm类似。详细参见:http://incubator.apache.org/s4/
(19)Apache Thrift
Thrift是一个跨语言的服务开发框架。用它可让你的服务支持多种语言的开发,并可用代码生成器对它所定义的IDL定义文件自动生成服务代码框架。它最早由Facebook开发并开源出来。 详细参见:http://thrift.apache.org/
(20)Impala
Impala采用与Hive相同的元数据、SQL语法、ODBC驱动程序和用户接口(Hue Beeswax),这样在使用CDH产品时,批处理和实时查询的平台是统一的。目前支持的文件格式是文本文件和Sequence Files(可以压缩为Snappy、GZIP和BZIP,前者性能最好)。其他格式如Avro、RCFile、LZO文本和Doug Cutting的Trevni将在正式版中支持,官方测试速度是Hive的3~90倍。详细参见:http://www.cloudera.com/content/cloudera/en/products-and-services/cdh/impala.html
(21)Nutch
最后,得提一下Apache Nutch开源网络爬虫系统。Hadoop最早是为Nutch服务而诞生的,即为大规模的网络爬虫系统提供分布式存储和计算服务。详细参见:https://nutch.apache.org/
说明:
开源的搜索引擎工具:Lucene,Nutch,Solr。
3、Hadoop应用场景
美国著名科技博客GigaOM的专栏作家Derrick Harris跟踪云计算和Hadoop技术已有多年时间,他也在最近的一篇文章中总结了10个Hadoop的应用场景,如下所示:
(1)在线旅游
你知道吗,目前全球范围内80%的在线旅游网站都是在使用Cloudera公司提供的Hadoop发行版,其中SearchBI网站曾经报道过的Expedia也在其中。
(2)移动数据
Cloudera运营总监称,美国有70%的智能手机数据服务背后都是由Hadoop来支撑的,也就是说,包括数据的存储以及无线运营商的数据处理等,都是在利用Hadoop技术。
(3)电子商务
这一场景应该是非常确定的,eBay就是最大的实践者之一。国内的电商在Hadoop技术上也是储备颇为雄厚的。
(4)能源开采
美国Chevron公司是全美第二大石油公司,他们的IT部门主管介绍了Chevron使用Hadoop的经验,他们利用Hadoop进行数据的收集和处理,其中这些数据是海洋的地震数据,以便于他们找到油矿的位置。
(5)节能
另外一家能源服务商Opower也在使用Hadoop,为消费者提供节约电费的服务,其中对用户电费单进行了预测分析。
(6)基础架构管理
这是一个非常基础的应用场景,用户可以用Hadoop从服务器、交换机以及其他的设备中收集并分析数据。
(7)图像处理
创业公司Skybox Imaging 使用Hadoop来存储并处理图片数据,从卫星中拍摄的高清图像中探测地理变化。
(8)诈骗检测
这个场景用户接触的比较少,一般金融服务或者政府机构会用到。利用Hadoop来存储所有的客户交易数据,包括一些非结构化的数据,能够帮助机构发现客户的异常活动,预防欺诈行为。
(9)IT安全
除企业IT基础机构的管理之外,Hadoop还可以用来处理机器生成数据以便甄别来自恶意软件或者网络中的攻击。
(10)医疗保健
医疗行业也会用到Hadoop,像IBM的Watson就会使用Hadoop集群作为其服务的基础,包括语义分析等高级分析技术等。医疗机构可以利用语义分析为患者提供医护人员,并协助医生更好地为患者进行诊断。
三、YARN
记得1.5年前的时候,首次接触Hadoop,那个时候Hadoop 2.X版本还没有出来,Spark也没有现在这么热。现在,Hadoop 2.X都出来快一年了,开源软件的发展速度之快,令人惊叹。以前Hadoop的学习都是比较零散的,不够系统,现在决定系统地、深入地学习Hadoop。掌握其精髓所在,即软件的工作原理和设计理念,而不忙于跟风,要深入地学习开发和运维,而不是盲目地追新,做安装卸载这样的重复性工作。总之,打牢HDFS和MapReduce基础,根据需要,逐步学习Hadoop的整个生态系统。
Hadoop 2.X最大的变化当然是YARN这个资源管理器了,或者说Hadoop操作系统了。YARN是Hadoop 2.0及以上版本的下一代集群资源管理和调度平台,支持多种计算框架,不仅支持MapReduce计算框架,还可以支持流式计算框架、图计算框架、实时/内存计算框架等,极大地扩展了Hadoop的使用场景,提高了Hadoop集群的利用效率。
说明:
集群资源管理和调度平台,除了YARN之外,还有Corona和Mesos等。
四、DRCP(Distributed Recommend Computing Platform)
1. Introduction
DRCP is a Distributed Machine Learning Platform based on Mahout,the functions are Distributed Storage and Distributed Computing, which is usedto scientific research and learning.
2. Topology
3. Software
(1)jdk-1.7.0
(2)hadoop-0.20.2
(3) mahout-0.5.0
(4)ubuntu-12.04
五、开发运维
最近在实验室搭建了一个4台Hadoop集群,在上面部署了分布式机器学习Mahout这个软件,我们的目的主要是为了做大数据推荐算法,提供一个生产平台。当然,4台Hadoop集群是远远不够的,以后会考虑升级的。通过这个真实的生产平台,提高MapReduce应用开发的能力,Hadoop和Mahout二次开发的能力,以及Hadoop运维的能力(调优)。打算在DRCP上开发我们的大数据推荐算法类库——Conquer,把一些经典的推荐算法,机器学习算法等,还有我们的研究成果MapReduce化之后融入到Conquer之中,到时候会开源的。
1、DRCP的升级
- 添加结点
- 删除结点
- 系统升级
- 软件安装
- 软件卸载
2、DRCP的运维
- 系统优化
[11] Hadoop应用场景: http://www.ciotimes.com/infrastructure/syjq/67136.html
分布式存储与分布式计算相关推荐
- 傻傻分不清?云存储、云计算与分布式存储、分布式计算是一回事吗?
随着互联网的蓬勃兴起,大数据.人工智能.物联网.云计算与云存储等这些专业词汇在大众视野内出现的频率越来越高,再加上近几年分布式技术异军突起,更使得分布式存储.分布式计算等成为热词.然而,很多人对这些名 ...
- 视频+全文|朱嘉明:大数据时代的危机与挑战 - 在DAO原则下构建分布式存储、分布式计算与分布式能源的未来...
朱嘉明 著名经济学家 横琴数链数字金融研究院 学术与技术委员会主席 经朱嘉明老师和DOIT授权,全文转载.先附上视频,抱歉不知为何封面图转了90度,不过点击进去播放是正常的. 大家好,我是朱嘉明. 首 ...
- PHP程序员的技术成长规划
PHP程序员的技术成长规划 作者:黑夜路人(2014/10/15) 按照了解的很多PHP/LNMP程序员的发展轨迹,结合个人经验体会,抽象出很多程序员对未来的迷漫,特别对技术学习的盲目和慌乱,简单梳理 ...
- 翻译翻译:什么叫架构?
以下文章来源方志朋的博客,回复"666"获面试宝典 作者:Yrion | 链接:cnblogs.com/wyq178/p/12151160.html 这个知识分享的爆炸时代,鉴于 ...
- 阿里巴巴为什么能抗住90秒100亿?看完这篇你就明白了!
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:huashiou 链接:https://segmentfau ...
- 淘宝服务端高并发分布式架构演进之路
点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 1. 概述 本文以淘宝作为例子,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列 ...
- 为什么阿里巴巴这一次能扛得起 11 亿的流量?
来源 | huashiou. segmentfault.com/a/1190000018626163 编辑 | 可可 1. 概述 本文介绍淘宝从一百个并发到千万级并发情况下服务端的架构的演进过程,同时 ...
- python画层次结构图_Maptree-层级结构数据展示的绝佳尝试
原标题:Maptree-层级结构数据展示的绝佳尝试 送书回馈 <Python数据分析与大数据处理从入门到精通> 内容简介:<Python数据分析与大数据处理从入门到精通>主要讲 ...
- Hadoop的基础架构
Hadoop这个名字现在对很多开发者来说,并不陌生,但是很多开发者对其工作原理和架构并不了解.Hadoop怎么实现的分布式存储和分布式计算,其计算性能为什么会提高那么多.本文将从其基本工作原理方面解释 ...
最新文章
- Java三大主流框架概述--(转载)
- jQuery :nth-child前有无空格的区别
- 将要改变IT世界的的docker技术是什么?
- 【软件构造】第二章 软件构建的过程和工具(2)
- eureka服务下线方式
- java swing 一闪而过_Java代码,为什么图形会一闪而过,怎么修改?
- 第八章:软件包的安装与管理
- 支付宝:“答答星球”小程序上线20天累计参与人数超2亿
- 六、Python之三元表达式、列表推导式、生成器表达式
- Wireshark 检索命令
- python画树干_python教你画一棵树
- Flink 集成 Iceberg 在同程艺龙的生产实践
- 快速排序c语言实现,快速排序——C语言实现
- 金蝶K3修改核算项目锁定字段的默认长度(以物料主数据的助记码为例)
- java idle 机制_Flink中Idle停滞流机制(源码分析)
- 关于Google地图路线偏移的问题
- spdlog linux编译出错,spdlog在工厂方法上崩溃
- 计算机硬盘越大运行速度越大吗,电脑的内存越大越好吗?如果只加大内存,电脑反而会被拖慢!...
- SpringBoot 时间格式化
- C语言编程题:输入一个华氏温度,要求输出一个摄氏温度。
热门文章
- cdn加速以及前后分离SpringBoot+Vue 配置https及SSL证书
- 使用ConfigFilter
- [node.js] Promise中,resolve, reject 之后需不需要 return?
- 华为5g服务器硬件供应商,华为发布5G多模终端芯片和商用终端
- Lucene基础(二)--索引的操作
- C语言小游戏解决生活中的数学问题
- echarts实现多y轴情况下多个元素共用一个y轴
- 外贸行业找客户的三种方式和五种工具
- obj文件、mtl文件结构说明
- matlab进行道格拉斯筛选,用MATLAB计算柯布道格拉斯函数,需要计算程序,急!谢谢大神...