关于Ambari中服务运行正常UI却显示服务停止的问题
很多时候环境的维护的确是件头痛的事件,这不本来在Ambari的Dashboard页面显示正常服务的监控,实然间出现了个奇怪的现象: 在机器查询服务的运行进程是正常的,可偏偏Ambari的UI界面却显示状为停止,但端口检查又显示正常的。如下图:
很多时候环境的维护的确是件头痛的事件,这不本来在Ambari的Dashboard页面显示正常服务的监控,实然间出现了个奇怪的现象: 在机器查询服务的运行进程是正常的,可偏偏Ambari的UI界面却显示状为停止,但端口检查又显示正常的。如下图:
之前一直都是用HDP
来搭建和管理Hadoop环境,在安装完成调试时也未曾出现过棘手的问题,但这次在Centos6x
系统上布署好后却是遇到奇怪的问题:
表面上看来Hive服务是正常运行的,进程运行正常,页面UI也正常,日志也没错误输出。简单的建表的语句都能执行,可偏偏在导入本地/HDFS数据时,便就抛出异常啦。错误的堆栈信息如下:
|
|
另外一个问题在使用Ambari提供的
HiveView
UI进行HDFS数据导入提示文件不存在,错误信息如下:
|
|
在官方文档的介绍中,了解到Azkaban
所支持的工作类型还是很丰富的,如:Command
,HadoopShell
,Python
,Java
,Hive
,Pig
等等。不过在此我们主要具体只来讲解下Python
与Java
的工作类型任务,其它工作类型的话,比如Commnad
,Hive
,HadoopShell
相对比较简单就不做详解,有需要的话可以自行实践一下。
不管提交哪一种任务,Azkaban
默认都是通过上传压缩包来管理,那么在此建议大家养成一个习惯,不要所执行的文件(代码)打包到Azkaban
的工程包里面。这样带来的好处是显而易见的,比如:
工程创建的速度快,不需要上传执行部分文件
避免了修改MySQL
中的max_allow_packet
参数以解决工程文件上传失败的问题
在分布式布署环境中,当执行Task免去了在不同节点中拷贝工程包的麻烦
在大数据繁杂的ETL或其它数据处理过程当中,有些任务是需要定时执行的,虽然Linux自带了cron
命令功能,但是仍不能满足最大的一点就是它不能提供集中式的管理和可视化的编辑。其实在大数据的生态当中已集成有个定时调度框架Oozie
,只是实践下来发现其学习成本不低,布署的过程也较复杂。在尝试过其它分布工调度框架后(如阿里的宙斯Zeus
),还是选择了社区较多人使用的Azkaban
。
Azkaban3
相对于上个版本所做的更改还是比较大的,感兴趣的话可以到其官方网站
Azkaban
了解下。接下来主要还是分享下Azkaban3
的安装布署,下面是Azkaban3
的系统架构设计图:
图中的3个组件便是Azkaban3
的重要组成部分:
通常我们都是在本地用hexo deploy
发布博客文章到远程的Pages服务器,可别忘记了我们是还需要提交代码的,所以是不是觉得有点麻烦还得分开两步进行操作。这时突然想起是否可用Travis CI
工具来完成这个布署的操作呢?答案是肯定的,整体的流程大致如下:
Travis
脚本生成静态博客只是这其中有点比较麻烦的问题就是如何保护我们的私钥,还好Travis CI
已经为我们准备好啦,那么就开始我们的捣腾之旅吧。
码好代码在测试环境做好测试后,满怀信心的去布署上线到生产环境,结果就是一堆的异常,具体查看了后发现是连接数据库的问题,异常信息如下:
在非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调整后仍是失败,随后尝试查找国内的镜像,还有真人也遇到过相同的问题。镜像列表如下: