0%

在官方文档的介绍中,了解到Azkaban所支持的工作类型还是很丰富的,如:CommandHadoopShellPythonJavaHivePig等等。不过在此我们主要具体只来讲解下PythonJava的工作类型任务,其它工作类型的话,比如CommnadHiveHadoopShell相对比较简单就不做详解,有需要的话可以自行实践一下。

不管提交哪一种任务,Azkaban默认都是通过上传压缩包来管理,那么在此建议大家养成一个习惯,不要所执行的文件(代码)打包到Azkaban的工程包里面。这样带来的好处是显而易见的,比如:

  • 工程创建的速度快,不需要上传执行部分文件

  • 避免了修改MySQL中的max_allow_packet参数以解决工程文件上传失败的问题

  • 在分布式布署环境中,当执行Task免去了在不同节点中拷贝工程包的麻烦

背景与介绍

在大数据繁杂的ETL或其它数据处理过程当中,有些任务是需要定时执行的,虽然Linux自带了cron命令功能,但是仍不能满足最大的一点就是它不能提供集中式的管理和可视化的编辑。其实在大数据的生态当中已集成有个定时调度框架Oozie,只是实践下来发现其学习成本不低,布署的过程也较复杂。在尝试过其它分布工调度框架后(如阿里的宙斯Zeus),还是选择了社区较多人使用的Azkaban

Azkaban3相对于上个版本所做的更改还是比较大的,感兴趣的话可以到其官方网站 Azkaban 了解下。接下来主要还是分享下Azkaban3的安装布署,下面是Azkaban3的系统架构设计图:

Azkaban-Install00

图中的3个组件便是Azkaban3的重要组成部分:

  • MySQL关系数据存储数据
  • Web Server GUI管理服务提供者
  • Executor Server 分布式节点服务布署

码好代码在测试环境做好测试后,满怀信心的去布署上线到生产环境,结果就是一堆的异常,具体查看了后发现是连接数据库的问题,异常信息如下:

1
2
3
4
(40532, 'Cannot open server "1433D" requested by the login.  
The login failed.DB-Lib error message 20018, severity 20:\n
General SQL Server error: Check messages from the SQL Server\n
DB-Lib error message 20002, severity 9:\nAdaptive Server connection failed\n')

在非Windows环境下去访问,连接 MSSQL 数据,本身就是件苦差事来的。自写Python程序以来在ORM方面都是使用pyxxx的模块,果不其然连接 MSSQL 也有个模块叫pymssql,只是实际使用中并不是特别的顺利。如笔者所处的环境就是如此,开发环境为OSX 10.11,发布环境为CentOS 6.4,按官方的安装步骤实行下来,Linux 环境是OK的,只是 Mac 环境下安装失败,错误的堆栈信息如下:

Hue is a Web applications that enables you to easily interact with an Hadoop cluster. Hue applications let you browse HDFS, Jobs, run Hive, Pig and Cloudera Impala queries, manage the Hive Metastore, HBase, Sqoop, ZooKeeper, MapReduce jobs, and create and schedule worklows with Oozie.

更加关于HUE的介绍及演示可访问其官方网站: http://gethue.com

在程序遇到问题需要DEBUG时,通过会增加一些**print**语句输出。于是乎按惯例也在Python的代码中加入print调试,然后输入python xxxx.py,满怀信心的期待着调试信息的满屏滚动,结果是过了好阵子才显示出来。为何会这样呢?

根据网友建议增加个-u参数就OK,后来查了下原因:Python在默认情况会先把print输出到缓冲中,待缓冲满或程序后才会输出。所以可以在运行Python程序时加入此参数是非常的有用。

今天在安装一个Python模块–>pymysql结果等待时间特别的长,最后超时失败啦,起初是以为是网络带宽问题,让IT调整后仍是失败,随后尝试查找国内的镜像,还有真人也遇到过相同的问题。镜像列表如下:

1
2
3
4
5
6
https://pypi.douban.com/simple/ 豆瓣
http://mirrors.aliyun.com/pypi/simple/ 阿里
http://pypi.hustunique.com/simple/ 华中理工大学
http://pypi.sdutlinux.org/simple/ 山东理工大学
http://pypi.mirrors.ustc.edu.cn/simple/ 中国科学技术大学
https://pypi.tuna.tsinghua.edu.cn/simple 清华

对于项目开发常见的前后端分离模式来说,中间在后端完成接口开发交付对接时,前端人员往往苦于没有接口文档会经常"跑去"骚扰后端人员,真是苦不堪言哪。要是此时有个文档化的说明那就轻松多啦,现在后端流行的文档生成利器有Swagger,它虽然方便,但是也有弊端得写在的后台的代码中,而且启动整个后台项目才能访问。或许有时还真不太方便的,另外就是项目初期要对接口做个规划也无法用这个方法,难道就没有别的办法了嘛?

实际上kylin自带的WEB UI已经集成了建议的图形报表,有常见的线形,柱形及饼图,用于数据的初步展示是完全够用的。如果要更加丰富的展示,那可以考虑使用别的工具,现在就试试官方推荐的Apache Zeppelin。

最近正在捣鼓构建数据仓库的事宜,正好有部分维度表的数据需要来自于RDBMS的数据,在HADOOP环境最流行的莫过于Apache的Sqoop工具,按官方的文档操作下来也很顺畅的,不过当要应用到业务场景上时问题便出现了。