首页 文章 精选 留言 我的

精选列表

搜索[linux运维],共10020篇文章
优秀的个人博客,低调大师

spark 实战 简介

Spark大数据计算框架、架构、计算模型和数据管理策略及 Spark在工业界的应用。围绕 Spark的 BDAS项目及其子项目进行了简要介绍。目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含 SparkSQL、Spark Streaming、GraphX、 MLlib 等子项目,本章只进行简要介绍,后续章节再详细阐述。 1.1Spark 是什么 Spark 是基于内存计算的大数据并行计算框架。Spark 基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将 Spark部署在大量廉价硬件之上,形成集群。 Spark 于2009 年诞生于加州大学伯克利分校AMPLab。目前,已经成为Apache 软件基金会旗下的顶级开源项目。下面是 Spark的发展历程。 1.Spark 的历史与发展 2009 年:Spark 诞生于AMPLab。 2010 年:开源。 2013 年6 月:Apache 孵化器项目。 2014 年2 月:Apache 顶级项目。 2014 年2 月:大数据公司Cloudera 宣称加大Spark 框架的投入来取代MapReduce。 2014 年4 月:大数据公司MapR 投入Spark 阵营,Apache Mahout 放弃MapReduce, 将使用 Spark作为计算引擎。 2014 年5 月:Pivotal Hadoop 集成Spark 全栈。 2014 年5 月30 日:Spark 1.0.0 发布。 2014 年6 月:Spark 2014 峰会在旧金山召开。 2014 年7 月:Hive on Spark 项目启动。 目前 AMPLab和 Databricks负责整个项目的开发维护,很多公司,如 Yahoo!、Intel等 参与到 Spark的开发中,同时很多开源爱好者积极参与 Spark的更新与维护。 AMPLab 开发以Spark 为核心的BDAS 时提出的目标是:one stack to rule them all,也 就是说在一套软件栈内完成各种大数据分析任务。相对于 MapReduce上的批量计算、迭代型计算以及基于 Hive的 SQL查询,Spark可以带来上百倍的性能提升。目前 Spark的生态系统日趋完善,Spark SQL的发布、Hive on Spark项目的启动以及大量大数据公司对 Spark全栈的支持,让 Spark的数据分析范式更加丰富。 2.Spark 之于Hadoop 更准确地说,Spark是一个计算框架,而 Hadoop中包含计算框架 MapReduce和分布式文件系统 HDFS,Hadoop更广泛地说还包括在其生态系统上的其他系统,如 Hbase、 Hive 等。 Spark 是MapReduce 的替代方案,而且兼容HDFS、Hive 等分布式存储层,可融入 Hadoop 的生态系统,以弥补缺失MapReduce 的不足。Spark 相比Hadoop MapReduce 的优势 如下。 (1)中间结果输出基于 MapReduce的计算引擎通常会将中间结果输出到磁盘上,进行存储和容错。出于 任务管道承接的考虑,当一些查询翻译到 MapReduce任务时,往往会产生多个 Stage,而这些串联的 Stage又依赖于底层文件系统(如 HDFS)来存储每一个 Stage的输出结果。 Spark 将执行模型抽象为通用的有向无环图执行计划(DAG),这可以将多Stage 的任务串联或者并行执行,而无须将 Stage中间结果输出到 HDFS中。类似的引擎包括 Dryad、 Tez。 (2)数据格式和内存布局由于 MapReduce Schema on Read处理方式会引起较大的处理开销。Spark抽象出分布式内存存储结构弹性分布式数据集 RDD,进行数据的存储。RDD能支持粗粒度写操作,但对于读取操作,RDD可以精确到每条记录,这使得 RDD可以用来作为分布式索引。 Spark的特性是能够控制数据在不同节点上的分区,用户可以自定义分区策略,如 Hash分区等。 Shark 和Spark SQL 在Spark 的基础之上实现了列存储和列存储压缩。 (3)执行策略 MapReduce 在数据Shuffle 之前花费了大量的时间来排序,Spark 则可减轻上述问题带 来的开销。因为 Spark任务在 Shuffle中不是所有情景都需要排序,所以支持基于 Hash的分布式聚合,调度中采用更为通用的任务执行计划图(DAG),每一轮次的输出结果在内存缓存。 (4)任务调度的开销传统的 MapReduce系统,如 Hadoop,是为了运行长达数小时的批量作业而设计的,在 某些极端情况下,提交一个任务的延迟非常高。 Spark 采用了事件驱动的类库AKKA 来启动任务,通过线程池复用线程来避免进程或线程启动和切换开销。 3.Spark 能带来什么 Spark 的一站式解决方案有很多的优势,具体如下。(1)打造全栈多计算范式的高效数据流水线 Spark 支持复杂查询。在简单的“map ”及“reduce ”操作之外,Spark 还支持SQL 查询、流式计算、机器学习和图算法。同时,用户可以在同一个工作流中无缝搭配这些计算范式。 (2)轻量级快速处理 Spark 1.0 核心代码只有4 万行。这是由于Scala 语言的简洁和丰富的表达力,以及 Spark 充分利用和集成Hadoop 等其他第三方组件,同时着眼于大数据处理,数据处理速度是至关重要的,Spark通过将中间结果缓存在内存减少磁盘 I/O来达到性能的提升。 (3)易于使用,Spark支持多语言 Spark 支持通过Scala、Java 及Python 编写程序,这允许开发者在自己熟悉的语言环境 下进行工作。它自带了 80多个算子,同时允许在 Shell中进行交互式计算。用户可以利用 Spark 像书写单机程序一样书写分布式程序,轻松利用Spark 搭建大数据内存计算平台并充分利用内存计算,实现海量数据的实时处理。 (4)与 HDFS等存储层兼容 Spark 可以独立运行,除了可以运行在当下的YARN 等集群管理系统之外,它还可以读取已有的任何 Hadoop数据。这是个非常大的优势,它可以运行在任何 Hadoop数据源上,0Hive、HBase、HDFS 等。这个特性让用户可以轻易迁移已有的持久化层数据。(5)社区活跃度高 Spark 起源于2009 年,当下已有超过50 个机构、260 个工程师贡献过代码。开源系统的发展不应只看一时之快,更重要的是支持一个活跃的社区和强大的生态系统。 同时我们也应该看到 Spark并不是完美的,RDD模型适合的是粗粒度的全局数据并行计算。不适合细粒度的、需要异步更新的计算。对于一些计算需求,如果要针对特定工作负载达到最优性能,还是需要使用一些其他的大数据系统。例如,图计算领域的 GraphLab在特定计算负载性能上优于 GraphX,流计算中的 Storm在实时性要求很高的场合要比 Spark Streaming 更胜一筹。 随着 Spark发展势头日趋迅猛,它已被广泛应用于 Yahoo!、Twitter、阿里巴巴、百度、网易、英特尔等各大公司的生产环境中。

优秀的个人博客,低调大师

Hadoop集群日常

(一)备份namenode的元数据namenode中的元数据非常重要,如丢失或者损坏,则整个系统无法使用。因此应该经常对元数据进行备份,最好是异地备份。1、将元数据复制到远程站点(1)以下代码将secondary namenode中的元数据复制到一个时间命名的目录下,然后通过scp命令远程发送到其它机器 #!/bin/bash export dirname=/mnt/tmphadoop/dfs/namesecondary/current/`date +%y%m%d%H` if [ ! -d ${dirname} ] then mkdir ${dirname} cp /mnt/tmphadoop/dfs/namesecondary/current/* ${dirname} fi scp -r ${dirname} slave1:/mnt/namenode_backup/ rm -r ${dirname} (2)配置crontab,定时执行此项工作0 0,8,14,20 * * * bash /mnt/scripts/namenode_backup_script.sh2、在远程站点中启动一个本地namenode守护进程,尝试加载这些备份文件,以确定是否已经进行了正确备份。(二)数据备份对于重要的数据,不能完全依赖HDFS,而是需要进行备份,注意以下几点(1)尽量异地备份(2)如果使用distcp备份至另一个hdfs集群,则不要使用同一版本的hadoop,避免hadoop自身导致数据出错。(三)文件系统检查定期在整个文件系统上运行HDFS的fsck工具,主动查找丢失或者损坏的块。建议每天执行一次。 [jediael@master ~]$ hadoop fsck / ……省略输出(若有错误,则在此外出现,否则只会出现点,一个点表示一个文件)…… .........Status: HEALTHY Total size: 14466494870 B Total dirs: 502 Total files: 1592 (Files currently being written: 2) Total blocks (validated): 1725 (avg. block size 8386373 B) Minimally replicated blocks: 1725 (100.0 %) Over-replicated blocks: 0 (0.0 %) Under-replicated blocks: 648 (37.565216 %) Mis-replicated blocks: 0 (0.0 %) Default replication factor: 2 Average block replication: 2.0 Corrupt blocks: 0 Missing replicas: 760 (22.028986 %) Number of data-nodes: 2 Number of racks: 1 FSCK ended at Sun Mar 01 20:17:57 CST 2015 in 608 milliseconds The filesystem under path '/' is HEALTHY (1)若hdfs-site.xml中的dfs.replication设置为3,而实现上只有2个datanode,则在执行fsck时会出现以下错误;/hbase/Mar0109_webpage/59ad1be6884739c29d0624d1d31a56d9/il/43e6cd4dc61b49e2a57adf0c63921c09: Under replicated blk_-4711857142889323098_6221. Target Replicas is 3 but found 2 replica(s).注意,由于原来的dfs.replication为3,后来下线了一台datanode,并将dfs.replication改为2,但原来已创建的文件也会记录dfs.replication为3,从而出现以上错误,并导致 Under-replicated blocks: 648 (37.565216 %)。(2)fsck工具还可以用来检查一个文件包括哪些块,以及这些块分别在哪等 [jediael@master conf]$ hadoop fsck /hbase/Feb2621_webpage/c23aa183c7cb86af27f15d4c2aee2795/s/30bee5fb620b4cd184412c69f70d24a7 -files -blocks -racks FSCK started by jediael from /10.171.29.191 for path /hbase/Feb2621_webpage/c23aa183c7cb86af27f15d4c2aee2795/s/30bee5fb620b4cd184412c69f70d24a7 at Sun Mar 01 20:39:35 CST 2015 /hbase/Feb2621_webpage/c23aa183c7cb86af27f15d4c2aee2795/s/30bee5fb620b4cd184412c69f70d24a7 21507169 bytes, 1 block(s): Under replicated blk_7117944555454804881_3655. Target Replicas is 3 but found 2 replica(s). 0. blk_7117944555454804881_3655 len=21507169 repl=2 [/default-rack/10.171.94.155:50010, /default-rack/10.251.0.197:50010] Status: HEALTHY Total size: 21507169 B Total dirs: 0 Total files: 1 Total blocks (validated): 1 (avg. block size 21507169 B) Minimally replicated blocks: 1 (100.0 %) Over-replicated blocks: 0 (0.0 %) Under-replicated blocks: 1 (100.0 %) Mis-replicated blocks: 0 (0.0 %) Default replication factor: 2 Average block replication: 2.0 Corrupt blocks: 0 Missing replicas: 1 (50.0 %) Number of data-nodes: 2 Number of racks: 1 FSCK ended at Sun Mar 01 20:39:35 CST 2015 in 0 milliseconds The filesystem under path '/hbase/Feb2621_webpage/c23aa183c7cb86af27f15d4c2aee2795/s/30bee5fb620b4cd184412c69f70d24a7' is HEALTHY 此命令的用法如下: [jediael@master ~]$ hadoop fsck -files Usage: DFSck <path> [-move | -delete | -openforwrite] [-files [-blocks [-locations | -racks]]] <path> start checking from this path -move move corrupted files to /lost+found -delete delete corrupted files -files print out files being checked -openforwrite print out files opened for write -blocks print out block report -locations print out locations for every block -racks print out network topology for data-node locations By default fsck ignores files opened for write, use -openforwrite to report such files. They are usually tagged CORRUPT or HEALTHY depending on their block allocation status Generic options supported are -conf <configuration file> specify an application configuration file -D <property=value> use value for given property -fs <local|namenode:port> specify a namenode -jt <local|jobtracker:port> specify a job tracker -files <comma separated list of files> specify comma separated files to be copied to the map reduce cluster -libjars <comma separated list of jars> specify comma separated jar files to include in the classpath. -archives <comma separated list of archives> specify comma separated archives to be unarchived on the compute machines. The general command line syntax is bin/hadoop command [genericOptions] [commandOptions] 详细解释请见《hadoop权威指南》P376(四)均衡器随时时间推移,各个datanode上的块分布来越来越不均衡,这将降低MR的本地性,导致部分datanode相对更加繁忙。 均衡器是一个hadoop守护进程,它将块从忙碌的DN移动相对空闲的DN,同时坚持块复本放置策略,将复本分散到不同的机器、机架。 建议定期执行均衡器,如每天或者每周。 (1)通过以下命令运行均衡器 [plain]view plaincopy [jediael@masterlog]$start-balancer.sh startingbalancer,loggingto/var/log/hadoop/hadoop-jediael-balancer-master.out 查看日志如下: [plain]view plaincopy [jediael@masterhadoop]$pwd /var/log/hadoop [jediael@masterhadoop]$ls hadoop-jediael-balancer-master.loghadoop-jediael-balancer-master.out [jediael@masterhadoop]$cathadoop-jediael-balancer-master.log 2015-03-0121:08:08,027INFOorg.apache.hadoop.net.NetworkTopology:Addinganewnode:/default-rack/10.251.0.197:50010 2015-03-0121:08:08,028INFOorg.apache.hadoop.net.NetworkTopology:Addinganewnode:/default-rack/10.171.94.155:50010 2015-03-0121:08:08,028INFOorg.apache.hadoop.hdfs.server.balancer.Balancer:0overutilizednodes: 2015-03-0121:08:08,028INFOorg.apache.hadoop.hdfs.server.balancer.Balancer:0underutilizednodes: (2)均衡器将每个DN的使用率与整个集群的使用率接近,这个“接近”是通过-threashold参数指定的,默认是10%。(3)不同节点之间复制数据的带宽是受限的,默认是1MB/s,可以通过hdfs-site.xml文件中的dfs.balance.bandwithPerSec属性指定(单位是字节)。 (五)datanode块扫描器 每个datanode均会运行一个块扫描器,定期检测本节点上的所有块,若发现存在错误(如检验和错误),则通知namenode,然后由namenode发起数据重新创建复本或者修复。 扫描周期由dfs.datanode.scan.period.hours指定,默认为三周(504小时)。 通过地址以下地址查看扫描信息: (1)http://datanote:50075/blockScannerReport 列出总体的检测情况 [plain]view plaincopy TotalBlocks:1919 Verifiedinlasthour:4 Verifiedinlastday:170 Verifiedinlastweek:535 Verifiedinlastfourweeks:535 VerifiedinSCAN_PERIOD:535 Notyetverified:1384 Verifiedsincerestart:559 Scanssincerestart:91 Scanerrorssincerestart:0 Transientscanerrors:0 CurrentscanratelimitKBps:1024 Progressthisperiod:113% Timeleftincurperiod:97.14% (2)http://123.56.92.95:50075/blockScannerReport?listblocks列出所有的块及最新验证状态blk_8482244195562050998_3796 : status : ok type : none scan time : 0 not yet verifiedblk_3985450615149803606_7952 : status : ok type : none scan time : 0 not yet verified尚未验证的情况如上。各字段意义可参考权威指南P379 本文转自 yntmdr 51CTO博客,原文链接:http://blog.51cto.com/yntmdr/1733757,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册