`
qindongliang1922
  • 浏览: 2141170 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:116015
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:124371
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:58247
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:70192
社区版块
存档分类
最新评论

Bug死磕之hue集成的oozie+pig出现资源任务死锁问题

阅读更多


这两天,打算给现有的Apache Hadoop2.7.1的集群装个hue,方便业务人员使用hue的可视化界面,来做一些数据分析任务,这过程遇到不少问题,不过大部分最终都一一击破,收获经验若干,折腾的过程,其实也是一个学习的过程,一个历练的过程,我相信优秀的人,都是经历过无数磨难成就的,并且有着坚持不放弃的心态,迎接各种挑战,如果你总是遇到困难就放弃,那么你永远也不能成为最优秀的人,废话不多说了,下面开始进入正题:


框架版本如下:
Centos6.5
Apache Hadoop2.7.1
Apache Hbase0.98.12
Apache Hive1.2.1
Apache Pig0.15.0
Apache oozie4.2.0
Apache Spark1.6.0
Cloudrea Hue3.8.1

(一)安装hue

1,到官网下载   http://gethue.com/category/release/
2,解压到某个目录hue
3,安装依赖:yum install -y asciidoc cyrus-sasl-devel cyrus-sasl-gssapi gcc gcc-c++ krb5-devel  libtidy  libxml2-devel libxslt-devel make mysql mysql-devel openldap-devel python-devel   sqlite-devel openssl-devel  gmp-devel
4,进入hue目录,运行make apps编译
5,配置desktop/conf/hue.ini
6,启动build/env/bin/supervisor 杀死脚本(ps -ef | grep hue-  | gawk '{print $2}' | xargs kill -9)


如果你的hue只是用来操作hive的,那么没必要安装oozie了,那么整个流程就简单了,进入hive目录启动memstore和hiveserver2服务即可:
bin/hive --service metastore
bin/hiveserver2
一个使用hue查询的hive的查询如下:




很漂亮,用来调试sql非常方便,如果你想使用工作流或者pig功能,那么就需要安装oozie了
oozie安装编译比较坑,这里需要注意一下,目前最新的版本oozie的最新版本是4.2.0,但是依赖的
hive只支持0.13.1
hbase支持到0.94.2
spark,hadoop,pig均可支持当然最新版本
而且pom文件里面用到的codehash镜像已经失效,如果不去掉,则会编译失败:

 <repository>
            <id>Codehaus repository</id>
            <url>http://repository.codehaus.org/</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>



(二) 安装oozie
1,下载oozie
wget  http://archive.apache.org/dist/oozie/4.2.0/oozie-4.2.0.tar.gz

2,解压至某个盘符,修改其根目录下的pom文件里面的pig(加载类是h2,代表hadoop2.x),hadoop,hbase,hive,spark等版本,hbase和hive使用最新的可能会编译失败,这一点需要注意,经测试hbase0.94.2和hive0.13.1可正常编译通过,

3,修改完毕后,执行编译
bin/mkdistro.sh -P hadoop-2 -DskipTests

mvn clean package assembly:single -P hadoop-2 -DskipTests
4,执行成功后,拷贝oozie-4.2.0/distro/target/oozie-4.2.0-distro.tar.gz 至安装目录,
具体请参考我的这篇文章:
http://qindongliang.iteye.com/blog/2212503


(三)在hue里面测试pig脚本:

写一个简单的pig脚本:





点击运行,发现oozie会启动两个任务,一个是launcher,一个pig脚本,lancher任务一直卡着95%进度,不再有任何变化,而主体的pig脚本,则一直在初始化阶段,不能被执行,看日志log无任何错误,就是一直打印
Heart beat
Heart beat
Heart beat
......

经过查资料,发现在集群小的时候,如果集群资源不充足,导致RM无法分配多个MR的资源,就会一直等待,然后整个任务就会处于假死状态,一直死锁不运行,其实就是多个MR任务,抢占资源,导致最后谁也运行不了造成的,如何解决?

方案一:
切换haodop集群默认使用的容量调度器为公平调度器,允许当前队列最多只能运行一个MR任务,多了就阻塞等待。
方案二:
切换haodop集群默认使用的容量调度器为公平调度器,创建多个队列把任务提交到不同的队列里面,避免资源抢占

 <property>
    <name>yarn.resourcemanager.scheduler.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
  </property>


  <property>
  <name>yarn.scheduler.fair.allocation.file</name>
  <value>file:/%HADOOP_HOME%/etc/hadoop/fair-scheduler.xml</value>
</property>

fair-scheduler.xml配置:
<?xml version="1.0"?>
<allocations>
  <queue name="test">
    <minResources>1000 mb, 1 vcores</minResources>
    <maxResources>5000 mb, 1 vcores</maxResources>
    <maxRunningApps>1</maxRunningApps>
    <aclSubmitApps>webmaster</aclSubmitApps>
    <weight>2.0</weight>
    <schedulingPolicy>fair</schedulingPolicy>
    <queue name="test-sub">
        <aclSubmitApps>webmaster</aclSubmitApps>
        <minResources>500 mb, 1 vcores</minResources>
    </queue>
  </queue>
  <user name="root">
    <maxRunningApps>1</maxRunningApps>
  </user>
 <user name="webmaster">
    <maxRunningApps>1</maxRunningApps>
  </user>
<!--
  <user name="gpadmin">
    <maxRunningApps>5</maxRunningApps>
  </user>-->
  <userMaxAppsDefault>1</userMaxAppsDefault>
 <fairSharePreemptionTimeout>30</fairSharePreemptionTimeout>
</allocations>


关于hadoop的资源调度,请参考下面的链接:

https://support.pivotal.io/hc/en-us/articles/201999117-How-to-Configure-YARN-Capacity-Scheduler-on-a-PHD-Cluster


修改完成后同步分发所有的hadoop节点,并拷贝一份到oozie/conf/hadoop-conf/下面一份,重启hadoop集群和oozie服务,再次执行脚本,发现运行没有问题:






如果还想配置,solr,hbase,只要在hue.ini里面配置即可,注意hbase的服务,需要启动hbase的thrift端口才行,
bin/hbase-daemon.sh start thrift
然后在hue.ini里面配置: hbase_clusters=(Cluster|h1:9090),必须是这种格式,否则hue不会识别





配置solr比较简单,支持写上solr的url即可:





扫码关注微信公众号:我是攻城师(woshigcs),我们一起学习,进步和交流!(woshigcs)
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园,有什么问题随时都可以留言,欢迎大家来访!




  • 大小: 52.2 KB
  • 大小: 20.6 KB
  • 大小: 48.3 KB
  • 大小: 42.1 KB
  • 大小: 29 KB
1
1
分享到:
评论

相关推荐

    asp代码ASP家教信息管理系统(源代码+论文)

    asp代码ASP家教信息管理系统(源代码+论文)本资源系百度网盘分享地址

    基于ssm高校毕业选题管理系统.zip

    基于ssm高校毕业选题管理系统.zip

    基于旷视研究院领先的深度学习算法,提供满足多业务场景的预训练模型.zip

    人工智能毕业设计&课程设计

    tensorflow_model_optimization-0.1.3.dev0-py2.py3-none-any.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    tensorflow_model_analysis-0.15.0-py3-none-any.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    粒子群算法.docx 粒子群算法(Particle Swarm Optimization,PSO)是一种优化算法,受到鸟群或鱼

    粒子群算法 粒子群算法(Particle Swarm Optimization,PSO)是一种优化算法,受到鸟群或鱼群等群体行为的启发。该算法通过模拟群体中个体之间的合作和竞争来搜索最优解。粒子群算法通常用于解决连续优化问题。 ### 工作原理: 1. **初始化**:随机生成一群粒子(也称为个体),每个粒子代表搜索空间中的一个解,并随机初始化其位置和速度。 2. **评估**:根据每个粒子的位置,计算其对应的适应度值(目标函数值)。 3. **更新**:根据个体最优和全局最优的情况,更新每个粒子的速度和位置。粒子会根据自己历史最好的位置以及整个群体历史最好的位置进行调整,以期望更好的搜索方向。 4. **迭代**:重复评估和更新步骤,直到满足停止条件(如达到最大迭代次数、目标函数值足够接近最优解等)。 ### 主要参数: - 粒子数量(Population Size):群体中粒子的数量,通常越大越容易找到全局最优解,但计算成本也会增加。 - 惯性权重(Inertia Weight):控制粒子运动的惯性,平衡局部搜索和全局搜索能力。通常随着迭代次数增加而逐渐减小。

    20210327 AI-for-Drug-Discovery-2020.pdf

    20210327 AI-for-Drug-Discovery-2020

    tensorflow_model_optimization-0.1.2-py2.py3-none-any.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    Linux创建虚拟机的步骤

    Linux创建虚拟机的步骤

    基于SpringBoot的校园二手书交易管理系统设计源码

    这是一个基于SpringBoot开发的校园二手书交易管理系统,使用Java语言,包含102个文件。主要文件类型包括39个Java源文件、23个HTML文件、10个PNG图片文件、9个XML文件、9个JavaScript文件、4个CSS文件、2个Markdown文档、2个JPG图片文件、1个gitignore文件和1个SVG文件。该项目简洁易用,采用的技术经典,非常适合Java项目入门学习和企业级Java开发熟悉,提供了二手书交易管理、用户认证、数据统计等功能,旨在为校园内的二手书交易提供一个便捷、安全的平台。

    基于SSM的旅游管理系统.zip

    基于SSM的旅游管理系统.zip

    基于ssm框架网络财务设计与实现.zip

    基于ssm框架网络财务设计与实现.zip

    三菱PLC例程源码PLC同变频器通讯程序3

    三菱PLC例程源码PLC同变频器通讯程序3本资源系百度网盘分享地址

    基于ssm+jsp网上茶叶销售平台.zip

    基于ssm+jsp网上茶叶销售平台.zip

    通信专业毕业设计(论文)-企业网通信方案设计

    随着网络和科学技术的飞速发展,网络建设作为信息化建设的基础,也越来越受到企业的重视,网络结构和网络信息安全都是企业信息化建设中需要解决的重要问题。 本设计出于对众宇通讯公司长期稳定发展的考虑,针对公司的现状和发展需求,为公司设计了一个稳定的、相对安全的、可扩展并且可以支撑必要的网络应用的网络结构。在此次设计中,主要的运用到的技术与实现功能有:(1)汇聚交换机上使用DHCP技术,使各个接入层设备可自动获取相应的IP地址,也避免了IP地址的冲突;(2)运用VRRP技术,增强网络的连续性和稳定性,实现多链路备份冗余和网关备份冗余;(3)运用MSTP技术,将不同的VLAN与相应实例捆绑,避免了网络环路和广播风暴的产生;(4)通过防火墙技术,实现了企业内部与外部网络之间的信息交互安全。除此之外,还进行了VLAN的划分,端口安全设置,ACL访问限制,NAT地址转换,使用OSPF协议、静态路由等网络配置。 本论文基于华为ENSP仿真模拟软件,充分考虑到了整个公司网络今后的实用性、安全性以及可扩展性。利用所学的相关知识和网络技术,对众宇通讯公司的网络进行模拟设计。此设计根据三层网络结构来搭建网络拓扑,

    Gromacs中文手册5.0.2.pdf

    Gromacs中文手册5.0.2

    三菱PLC例程源码八层以下货梯通用程序(奥菱达)

    三菱PLC例程源码八层以下货梯通用程序(奥菱达)本资源系百度网盘分享地址

    seg.v

    seg.v

    ftqqzx.zip

    ftqqzx.zip

    基于tensorflow深度学习的中文机器阅读理解-完形填空.zip

    人工智能毕业设计&课程设计

Global site tag (gtag.js) - Google Analytics