大数据处理的各个环节当中,涉及到诸多的任务执行,为了保证系统的性能和运行效率,就需要对这些任务进行合理的安排,这就需要到调度系统。在调度系统当中,DAG工作流类调度系统以Azkaban和Oozie为代表。今天的大数据开发分享,我们就主要来讲讲Azkaban和Oozie调度系统对比。
所谓DAG工作流类调度系统,这一类系统的方向,重点定位于任务的调度依赖关系的正确处理,分片执行的逻辑通常不是系统关注的核心,或者不是系统核心流程的关键组成部分,如果某些任务真的关注分片逻辑,往往交给后端集群(比如MR任务自带分片能力)或者具体类型的任务执行后端去实现。
DAG工作流类调度系统所服务的往往是作业繁多,作业之间的流程依赖比较复杂的场景,比如大数据开发平台的离线数仓报表处理业务,从数据采集,清洗,到各个层级的报表的汇总运算,到最后数据导出到外部业务系统,一个完整的业务流程,可能涉及到成百上千个相互交叉依赖关联的作业。
这类系统的代表,包括Oozie,Azkaban,Chronos,Zeus,Lhotse等,这里我们选取前两者,从功能、工作流定义、工作流传参、定时执行、资源管理、工作流执行等方面来进行分析比对:
1、功能
Azkaban与Oozie均可以调度maprece、pig、java脚本工作流任务。
Azkaban与Oozie均可以定时执行工作流任务。
2、工作流定义
Azkaban使用Properties文件定义工作流。
Oozie使用XML文件定义工作流。
3、工作流传参
Azkaban支持直接传参,例如${input}。
Oozie支持参数和EL表达式,例如${fs:dirSize(myInputDir)}。
4、定时执行
Azkaban的定时执行任务是基于时间的。
Oozie的定时执行任务是基于时间和输入数据资源管理。
5、工作流执行
Azkaban有两种运行模式,分别是solo server mode(executor server和web server部署在同⼀台节点)和multi server mode(executor server和web server可以部署在不同节点)。
Oozie作为工作流服务运行,支持多用户和多工作流。
综上所述,Ooize相比Azkaban是一个重量级的任务调度系统,功能全面,但配置使用也更复杂(xml)。如果可以不在意某些功能的缺失,轻量级调度Azkaban是很不错的候选对象。
关于大数据开发,Azkaban和Oozie调度系统,以上就为大家做了简单的介绍了。相对来说,Oozie调度系统更加全面,但是也更加复杂,在学习当中,也要多花精力去掌握。
『贰』 大数据平台的软件有哪些
这个要分好几块来讲,首先我要说明的是大数据项目也是要有很多依赖的模块的。每个模块的软件不一样,下面分别聊一下。
一、大数据处理
这个是所谓大数据项目中最先想到的模块。主要有spark,hadoop,es,kafka,hbase,hive等。
当然像是flume,sqoop也都很常用。
这些软件主要是为了解决海量数据处理的问题。软件很多,我只列几个经典的,具体可以自行网络。
二、机器学习相关
大部分大数据项目都和机器学习相关。因此会考虑到机器学习的一些软件,比如说sklearn,spark的ml,当然还有自己实现的代码。
三、web相关技术
大部分项目也都跑不了一个web的展示,因此web就很重要的,java的ssh,python的django都可以,这个看具体的项目组习惯了。
四、其它
还有一些很常用的东西,个人感觉不完全算是大数据特定使用范橘埋高围。反正我在做大数据项目的时候也都用到了。
比如说数据存储:redis,mysql。
数据可视化:echart,d3js。
图数据库:neo4j。
再来说说大数据平台的软件或者工具:
1、数据库,大数据平台类,星环,做Hadoop生态系列的大数据平台圆尺公司。Hadoop是开源的,星环主要做的是把Hadoop不稳定的部分优化,功能细化,为企业提供Hadoop大数据引擎及液键数据库工具。
2、大数据存储硬件类,浪潮,很老牌的IT公司,国资委控股,研究大数据方面的存储,在国内比较领先。
3、云计算,云端大数据类,阿里巴巴,明星产品-阿里云,与亚马逊AWS抗衡,做公有云、私有云、混合云。实力不差,符合阿里巴巴的气质,很有野心。
4、数据应用方面这个有很多,比如帆软旗下的FineReport报表系统和FineBI大数据分析平台等。
帆软是商业智能和数据分析平台提供商,从报表工具到商业智能,有十多年的数据应用的底子,在这个领域很成熟,目前处于快速成长期,但是很低调,是一家有技术有实力而且对客户很真诚的公司。
『叁』 大数据调度平台分类(Oozie/Azkaban/AirFlow/DolphinScheler)
大数据调度系统,是整个离线批处理任务和准实时计算计算任务的驱动器。这里我把几个常见的调度系统做了一下分类总结,结合目前阿里云上的MaxCompute中的调度系统,做个对比。
Oozie是一个workflow(工作流)协调系统,是由Cloudera公司贡献给Apache的,主要用来管理Hadoop作业(job)。
统一调度hadoop系统中常见的mr任务启动、Java MR、Streaming MR、Pig、Hive、Sqoop、Spark、Shell等。
配置相关的调度任务复杂,依赖关系、时间触发、事件触发使用xml语言进行表达。
任务状态、任务类型、任务运行机器、创建时间、启动时间、完成时间等。
支持启动/停止/暂停/恢复/重新运行:支持启动/停止/暂停/恢复/重新运行。
可以通过DB支持HA(高可用)。调度任务时可能出现死锁,依赖当前集群版本,如更新最新版,易于现阶段集群不兼容。
Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,主要用于在一个工作流内以一个特定的顺序运行一组工作和流程,它的配置是通过简单的key:value对的方式,通过配置中的dependencies 来设置依赖关系,这个依赖关系必须是无环的,否则会被视为无效的工作流。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
command、HadoopShell、Java、HadoopJava、Pig、Hive等,支持插件式扩展。
实际项目中经常有这些场景:每天有一个大任务,这个大任务可以分成A,B,C,D四个小任务,A,B任务之间没有依赖关系,C任务依赖A,B任务的结果,D任务依赖C任务的结果。一般的做法是,开两个终端同时执行A,B,两个都执行完了再执行C,最后再执行D。这样的话,整个的执行过程都需要人工参加,并且得盯着各任务的进度。但是我们的很多任务都是在深更半夜执行的,通过写脚本设置crontab执行。其实,整个过程类似于一个有向无环图(DAG)。每个子任务相当于大任务中的一个流,任务的起点可以从没有度的节点开始执行,任何没有通路的节点之间可以同时执行,比如上述的A,B。总结起来的话,我们需要的就是一个工作流的调度器,而Azkaban就是能解决上述问题的一个调度器。
提供job配置文件快速建立任务和任务之间的依赖关系,通过自定义DSL绘制DAG并打包上传。
只能看到任务状态。
只能先将工作流杀死在重新运行。
通过DB支持HA,任务太多时会卡死服务器。
Airflow 是 Airbnb 开源的一个用 Python 编写的调度工具。于 2014 年启动,2015 年春季开源,2016 年加入 Apache 软件基金会的孵化计划。Airflow 通过 DAG 也即是有向非循环图来定义整个工作流,因而具有非常强大的表达能力。
支持Python、Bash、HTTP、Mysql等,支持Operator的自定义扩展。
需要使用Python代码来定义流程。
不直观。
杀掉任务,重启。
任务过多会卡死。
XXL-JOB是一个开源的,具有丰富的任务管理功能以及高性能,高可用等特点的轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展、开箱即用。
基于Java。
无,但是可以配置任务之间的依赖。
无
可以暂停、恢复。
支持HA。任务是基于队列的,轮询机制。
DolphinScheler是今年(2019年)中国易观公司开源的一个调度系统,在今年美国时间2019年8月29号,易观开源的分布式任务调度引擎DolphinScheler(原EasyScheler)正式通过顶级开源组织Apache基金会的投票决议,根据Apache基金会邮件列表显示,在包含11个约束性投票(binding votes)和2个无约束性投票(non-binding votes)的投票全部持赞同意见,无弃权票和反对票,投票顺利通过,这样便以全票通过的优秀表现正式成为了Apache孵化器项目。
Apache DolphinScheler是一个分布式、去中心化、易扩展的可视化DAG工作流任务调度系统,其致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。
支持传统的shell任务,同时支持大数据平台任务调度:MR、Spark、SQL(mysql、postgresql、hive/sparksql)、python、procere、sub_process。
所有流、定时操作都是可视化的,通过拖拽来绘制DAG,配置数据源及资源,同时对于第三方系统,提供api方式的操作。
任务状态、任务类型、重试次数、任务运行机器、可视化变量,以及任务流执行日志。
支持暂停、恢复、补数操作。
支持HA,去中心化的多Master和多Worker。DolphinScheler上的用户可以通过租户和hadoop用户实现多对一或一对一的映射关系。无法做到细节的权限管控。
任务队列机制,单个机器上可调度的任务数量可以灵活配置,当任务过多时会缓存在任务队列中,不会操作机器卡死。
调度器使用分布式调度,整体的调度能力会随集群的规模线性正常,Master和Worker支持动态上下线,可以自由进行配置。
可以通过对用户进行资源、项目、数据源的访问授权。支持,可视化管理文件,及相关udf函数等。
『肆』 怎么开发大数据平台
开发数据大平台的操作方法具体如下。
1、操作体系的挑选。操作体系一般使用开源版的RedHat、Centos或许Debian作为底层的构建渠道,要根据大数据渠道所要建立的数据剖析东西能够支撑的体系,正确的挑选操作体系的版本。
2、建立Hadoop集群。Hadoop作为一个开发和运行处理大规模数据的软件渠道,实现了在大量的廉价计算机组成的集群中对海量数据进行分布式计算。Hadoop结构中最核心的规划是HDFS和MapRece,HDFS是一个高度容错性的体系,合适布置在廉价的机简橡配器上,能够供给高吞吐量的数据访问,适用于那些有着超大数据集的应用程序;MapRece是一套能够从海量的数据中提取数据最终回来成果集的编程模型。在生产实践应用中,Hadoop非常合适应用于大数据存储和大数据的剖析应用,合适服务于几千台到几万台大的服务器的集群运行,支撑PB级别的存储容量。
3、挑选数据接入和预处理东西。面临各种来源的数据,数据接入便是将这些零散的数据整合在一起,归纳起来进行剖析。数据接入首要包括文件日志的接入、数据库日志的接入、关系型数据库的接入和应用程序等的接入,数据接入常拦指用的东西有Flume,Logstash,NDC(网易数据运河体系),sqoop等。
4、数据存储。除了Hadoop中已广泛应用于数据存储的HDFS,常用的还有分布式、面向列的开源数据库Hbase,HBase是一种key、value体系,布置在HDFS上,与Hadoop一样,HBase的目标首要是依靠横向扩展,通过不断的添加廉价的商用服务器,添如耐加计算和存储才能。同时hadoop的资源管理器Yarn,能够为上层应用供给统一的资源管理和调度,为集群在利用率、资源统一等方面带来巨大的优点。
5、挑选数据挖掘东西。Hive能够将结构化的数据映射为一张数据库表,并供给HQL的查询功能,它是建立在Hadoop之上的数据仓库根底架构,是为了削减MapRece编写工作的批处理体系,它的出现能够让那些通晓SQL技术、可是不熟悉MapRece、编程才能较弱和不擅长Java的用户能够在HDFS大规模数据集上很好的利用SQL言语查询、汇总、剖析数据。
6、数据的可视化以及输出API。关于处理得到的数据能够对接主流的BI体系,比如国外的Tableau、Qlikview、PowrerBI等,国内的SmallBI和新兴的网易有数(可免费试用)等,将成果进行可视化,用于决策剖析;或许回流到线上,支撑线上业务的开展。
『伍』 如何搭建基于Hadoop的大数据平台
Hadoop: 一个开源的分布式存储、分布式计算平台.(基于)
Hadoop的组成:
HDFS:分布式文件系统,存储海量的数据。
MapRece:并行处理框架,实现任务分解和调度。
Hadoop的用处:
搭建大型数据仓库,PB级数据的存储、处理、分析、统计等业务。
比如搜索引擎、网页的数据处理,各种商业智能、风险评估、预警,还有一些日志的分析、数据挖掘的任务。
Hadoop优势:高扩展、低成本、成熟的生态圈(Hadoop Ecosystem Map)
Hadoop开源工具:
Hive:将SQL语句转换成一个hadoop任务去执行,降低了使用Hadoop的门槛。
HBase:存储结构化数据的分布式数据库,habase提供数据的随机读写和实时访问,实现 对表数据的读写功能。
zookeeper:就像动物管理员一样,监控hadoop集群里面每个节点的状态,管理整个集群 的配置,维护节点针之间数据的一次性等等。
hadoop的版本尽量选稳定版本,即较老版本。
===============================================
Hadoop的安装与配置:
1)在Linux中安装JDK,并设置环境变量
安装jdk: >> sudo apt-get install openjdk-7-jdk
设置环境变量:
>> vim /etc/profile
>> :wq
2)下载Hadoop,并设置Hadoop环境变量
下载hadoop解压缩:
>> cd /opt/hadoop-1.2.1/
>> ls
>> vim /etc/profile
>>:wq
3)修改4个配置文件
(a)修改hadoop-env.sh,设置JAVA_HOME
(b)修改core-site.xml,设置hadoop.tmp.dir, dfs.name.dir, fs.default.name
(c)修改mapred-site.xml, 设置mapred.job.tracker
(d)修改hdfs-site.xml,设置dfs.data.dir
>> cd conf
>> ls
>> vim mapred-site.xml
>> :wq
>> vim core-site.xml
第一部分
第二部分
>> :wq
>> vim hdfs-site.xml
>> :wq
>> vim hadoop-env.sh
>> :wq
# hadoop格式化
>> hadoop namenode -format
# hadoop启动
>> start-all.sh
# 通过jps命令查看当前运行进程
>> jps
看见以下进程即说明hadoop安装成功
『陆』 大数据采集平台有哪些
针对这个问题,我们先来了解下大数据采集平台提供的服务平台流程包括:
1,首先平台针对需求对数据进行采集。
2,平台对采集的数据进行存储。
3,再对数据进行分析处理。
4,最后对数据进行可视化展现,有报表,还有监控数据。
优秀的大数据平台要能在大数据分析镇岁方法,大数据编程,大数据仓库,大数据案例,人工智能,数据挖掘方面都能表现出优秀的性能。
现在来推荐几个主流且优秀的大数据平台:
1,ApacheFlume
Apache旗下的一款开源、高可靠、高扩展、容易管理、支持客户扩展的数据采集系统,它是一个分布式、可靠、可用的系统,是java运行时环境j用于从大量不同的源有效地收集、聚合、移动大量日志数据进行集中式数据存储。
主要的功能表现在:
1.日志收集:日志系统中定制各类数据发送方,用于收集数据。
2.数据处理:提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力,提供了从console(控制台)、RPC(Thrift-RPC)、text(文件)、tail(UNIXtail)、syslog(syslog日志系统,支持TCP和UDP等2种模式),exec(命令执行)等数据源上收集数据的能力。
2,Fluentd
Fluentd是一个用于统一日志层的开源数据收集器。Fluentd允许您统一数据收集和使用,以便更好地使用和理解数据。Fluentd是云端原生计算基金会(CNCF)的成员项目之一,遵循Apache2License协议。FLuentd的扩展性非常好,客户可以自己定制(Ruby)Input/Buffer/Output。
官网:
articles/quickstart
主要的功能表现在:
1,Input:负责接收数据或者主动抓取数据。支持syslog,http,filetail等。
2,Buffer:负责数据获取的性能和可靠性,也有文件或内存等不同类型的Buffer可以配置。
3,Output:负责输出数据到目的地例如文件,AWSS3或者其它的Fluentd。
3,Chukwa
Chukwa可以将各种各样类型的数据收集成适合Hadoop处理的文件保存在HDFS中供Hadoop进行各种MapRece操作。Chukwa本身也提供了很多内置的功能,帮助我们进行数据的收灶慎集和整理。
1,对应用的各个节点实时监控日志文件的变化,并将增量文件内容写入HDFS,同时还可以将数据去除重复,排序等。
2,监控来自Socket的数据,定时执行我们指定的命令获取输出数据。
优秀的平台还有很多,笔记浅谈为止,开发者根据官方提供的文档进行解读,才能深入了解,隐旅敬并可根据项目的特征与需求来为之选择所需的平台。