原文地址:http://www.cnblogs.com/breg/p/5552342.html

装了一个多星期的hive on spark 遇到了许多坑。还是写一篇随笔,免得以后自己忘记了。同事也给我一样苦逼的人参考。

先说明一下,这里说的Hive on SparkHive跑在Spark上,用的是Spark执行引擎,而不是MapReduce,和Hive on Tez的道理一样。

先看官网的资源Hive on Spark: Getting Started

要想在Hive中使用Spark执行引擎,第一步当前就是环境设置,我们需要在Hive启动的时候加载spark-assembly-1.5.0-hadoop2.6.0.jar,最简单的方法是把spark-assembly-1.5.0-hadoop2.6.0.jar包直接拷贝 到$HIVE_HOME/lib目录下。我采用的方法是在hive-site里面添加spark.home。具体给出官方的建议,这个不算坑,基本都能做好。

aaarticlea/png;base64,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Vkq8jVgJAADwmhArJYiVAAAARRErJYiVAAAARRErJYiVAAAARRErJYiVAAAARRErJYiVAAAARRErJYiVAAAARRErJYiVAAAARRErJYiVAAAARRErJYiVAAAARRErJYiVAAAARRErJYiVAAAARRErJYiVAAAARRErJYiVAAAARRErJYiVAAAARRErJYiVAAAARRErJT5//vz73//+pWsBAADwlhArJb5+/frb3/6WZAkAAJAfsVLu69evnz9/ngEAACAfYiUAAABKQKwEAABACYiVAAAAKAGxEgAAACUgVgIAAKAExEoAAACUgFgJAACAEhArAQAAUAJiJQAAAEpArAQAAEAJiJUAAAAoAbESAAAAJSBWAgAAoATESgAAAJSAWPnKrVabl64C3hsOqqfwiF5lRwB4b95xrLRNTTPtx627GhpahH7Uavdmq72rubbVqmuaprXH//wNW99VY2SEhXxLc4QQq1mv3TrSNU3T6s1LczT3z2eJlmr6UaszdNzImu6so2taa7CIlpZYK77aamjEq7qZmU2tac7U59DUKukWb+Yj87JZl+4P22pemkM7sYfcxWTQMdqjlbzOmqaVsI+kvnFnPanoQVWWve1VLVCoowr3auTz+NTx7RG9WuKn2y8w80NU0jEZ/xh2hsEXiXTrwfvGMPLRdAZn7fHmqWqr+qJ7FquZZRzp3qatHCcM4D0iVkolvvLc1Xxg6E3TdjPW8TZ51nMet8l91fiW5rj2bbPZmSy86rsr22rpTWue3IS3zUmnqUdOw5vRpXbd6egn3vLpinlLzQeGfuJ3UPynrm02tWZnkvkluy9WLsbXzfpHaxY0YTG7bUV2iG1qWqv1MV7CZtw+OTkJT2mq09735kX64WViZdmfxwyP6NXSd0SO382+0WJo6M3rIErGP4V5Y+VqaFyONk9T24wvumcwt5q64f1yvZn3jMSv4sD34p3HymurZxzpmlZPDsHtIfnKc2fmSRitXGfYadU1TdOPDHOyCFaJDIGFX5C2qRm9kVcN/cjozcNqSApJ1sFjDFdhcy6b9YLlCNm3tW3q+q0tb6kzONu9tRi09M7MnVsnemcWblJ2SpiZmldk9KeufXumN6/H+75fs88xm3Fbbw2c+I/dmRnWyTY1zRwOjUgVxWZ02bYso3islPenfD/OrZNo3vZ7K7b3zeHosq5p+vVkkyh8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" alt="" />

好了到这里开始讲我遇到的坑

第一个坑:直接使用spark pre-build版本,下来后按照上面配置弄结果报错

java.lang.NoSuchFieldError: SPARK_RPC_CLIENT_CONNECT_TIMEOUT

    at org.apache.hive.spark.client.rpc.RpcConfiguration.<clinit>(RpcConfiguration.java:46)

报了rpc错误,这个坑要好查点,发现是因为需要自己编译spark因为预编译的带了hive的支持也就是-Phive,这个参数是spark-sql对hive的支持用的,结果用在hive on spark就不行。没事,我们开始编译吧。接下来苦逼日子来了。

个坑:版本不对,刚开始以为hive 能使用 spark的任何版本,结果发现错了,hive对spark版本有着严格要求,具体对应版本你可以下载hive源码里面,搜索他pom.xml文件里面的spark版本,如果版本不对,启动hive后会报错。具体错误如下:

Failed to execute spark task, with exception 'org.apache.hadoop.hive.ql.metadata.HiveException(Failed to create spark client.)' FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.spark.SparkTask

第三个坑:spark的编译,在这里我使用的是hive稳定版本2.01,查看他的pom.xml需要的spark版本是1.5.0.接着讲诉我遇到坑爹的事情,直接让我快一个星期时间白费。在编译的时候使用了hive 官网提供的命令,悲催的事情发生了,使用的命令是:

./make-distribution.sh --name "hadoop2-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.6"

然后将 lib/spark-assembly-1.5.0-hadoop2.6.0.jar 这个包拷到你现在的spark/lib 下另外一个相同的注意备份

但是当启动spark集群的时候报错了,错误如下

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder

这个时候坑爹了,网上找来找去都没找到这个问题解决方案,上面错误原因就是说slf4j这个包找不到,你妹,完全按照官网来的,官网是怎么测试的呀,悲催了。接下来就是苦恼我一周的安装过程。

在网上找呀找,稍微看到一个靠谱的说法是编译的时候没有讲hadoop的jar包导进来,但是给出解决办法是在spark-env.sh里面添加

export SPARK_DIST_CLASSPATH=$(hadoop classpath)

好了添加了这个,spark master可以起来了,但是slaves仍然是上面错误,又开始找资料了。每天都在痛苦的阅读英文文档,差点抑郁了。而且国内google这不给力,用vpn时断时续,差点砸电脑。最后快绝望的时候回到spark官网,仔细阅读他提供的编译命令,死马当活马医吧。按照官网提供的编译命令再次编译spark.官网地址:http://spark.apache.org/docs/1.5.0/building-spark.html。他默认1.5.0使用是scala2.10进行编译,但是我安装的scala是2.11所以使用了以下命令。

./dev/change-scala-version.sh 2.11
mvn -Pyarn -Phadoop-2.4 -Dscala-2.11 -DskipTests clean package 这次编译的spark-assembly-1.5.0-hadoop2.6.0.jar 包有140mb左右比上次的多了40mb,感觉有点靠谱了,将这个包移过去,ok了!太开心了,一切都跑起来了。泪奔了,hive官网害人呀。 第四个坑,这个坑也算一个不大不小的坑,因为我偶然想装一下hue,在装hue遇到的错误,现在记录一下。
首先坑是hadoop的坑,如果在hadoop core-site.xml下面没有配置
<property>
    <name>hadoop.proxyuser.hdfs.hosts</name>
    <value>*</value>
    <description>Defines the Unix user, hdfs, that will run the HttpFS server as
      a proxyuser.</description>
  </property>
  <property>
    <name>hadoop.proxyuser.hdfs.groups</name>
    <value>*</value>
    <description>Replaces hdfs with the Unix user that will start the HttpFS server.
      </description>
  </property>
httpfs-site.xml
  <property>
    <name>hadoop.proxyuser.hue.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.hue.groups</name>
    <value>*</value>
</property>
hdfs-site.xml
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
这三个配置没配好的你讲没有权限访问hadoop,但是这个都是小事情,网上教程多,不怎么算坑。
接下来hive配置才是一个不大不小的坑,因为网上基本没有什么资料,对应版本是hive是2.0.1
网上基本的版本都教了怎么连接,但是用网上连接方法hive.log老是显示 old version ? 我一直以为我hive版本过高了,但是换成1.2.1这个版本一样错误。
于是又开始看google,看的又快奔溃了。开始网上有人叫把hive.server2.authentication这个属性改为NOSASL,但是改来改去没啥卵用,好了我就不卖关子了,
hue要连接hive其实还需要修改两个属性
第一个属性是hive.server2.authentication 这个要是NOSASl
第二个属性是hive.server2.enable.doAs 一定要是flase 不然就会报 old version?
看到可视化界面的时候还是有点成就感的。 第五个坑,装好了那么多东西,肯定想跑跑试试,于是觉得对nginx 日志进行分析,这时候对网上hive 分析 nginx进行了搜索,搜了一大堆,但是按他们的正则建表都不可以用,又开始泪奔了。
不停百度,资料结果全是千篇一律,好像大家抄的都是一篇。结果还是找呀找,终于找到原因了
原来正则必须不是一根斜杠,原来java必须是两根\\把我建表sql展示一下,不然还是太空了。其中不需要out那一行,直接用input就行
create table logs(ipaddress STRING,identity STRING,`user` STRING,time STRING,request STRING,status STRING,size STRING,host STRING,referer STRING,rbody STRING,agent STRING,forwarded STRING,uaddr STRING,ustatus STRING,urtime STRING,rtime STRING)ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' WITH SERDEPROPERTIES ('input.regex' =
'([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}) (-) (-) (\\[.*\\]) (\\"[^\\"]*\\") (\\d{3}) (\\d{1,}) (\\"[^\\"]*\\") (\\"[^\\"]*\") (-|[^\\s]*) (\\"[^\\"]*\\") (\\"[^\\"]*\\") ([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}:[0-9]{1,5}) (\\d{3}) ([\\d]{1,}\\.[\\d]{1,}) ([\\d]{1,}\\.[\\d]{1,})')
接下来可以跑了,扔了一个sql,你妹又报错了
return code 3 from org.apache.hadoop.hive.ql.exec.spark.SparkTask 这个坑不算大,因为通过查找hive,spark日志发现原来spark找不到org.apache.hadoop.hive.contrib.serde2.RegexSerDe
这个网上解决方法就多了,就是加上hive.aux.jars.path 这个属性里面你这个jar包地址如果是本地的记住前面要加file://哦不然找不到 好了这是安装hive on spark 遇到的一些坑,希望我的资料能对需要的人有些帮助吧。个人总结:遇到不会的别看网上的文章了,全是千篇一律,还是看官网的资料跟官网论坛,比看那些安装篇强上太多。

hive on spark的坑的更多相关文章

  1. 大数据学习系列之九---- Hive整合Spark和HBase以及相关测试

    前言 在之前的大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 中介绍了集群的环境搭建,但是在使用hive进行数据查询的时候会非常的慢,因为h ...

  2. Hive扩展功能(七)--Hive On Spark

    软件环境: linux系统: CentOS6.7 Hadoop版本: 2.6.5 zookeeper版本: 3.4.8 主机配置: 一共m1, m2, m3这五部机, 每部主机的用户名都为centos ...

  3. Hive on Spark安装配置详解(都是坑啊)

    个人主页:http://www.linbingdong.com 简书地址:http://www.jianshu.com/p/a7f75b868568 简介 本文主要记录如何安装配置Hive on Sp ...

  4. Hive On Spark环境搭建

    Spark源码编译与环境搭建 Note that you must have a version of Spark which does not include the Hive jars; Spar ...

  5. Hive记录-Hive on Spark环境部署

    1.hive执行引擎 Hive默认使用MapReduce作为执行引擎,即Hive on mr.实际上,Hive还可以使用Tez和Spark作为其执行引擎,分别为Hive on Tez和Hive on ...

  6. 搭建Hive所遇到的坑

    ##一.基本功能: 1.启动hive时报错 java.lang.ExceptionInInitializerError at java.lang.Class.forName0(Native Metho ...

  7. 伪分布式Spark + Hive on Spark搭建

    Spark大数据平台有使用一段时间了,但大部分都是用于实验而搭建起来用的,搭建过Spark完全分布式,也搭建过用于测试的伪分布式.现在是写一遍随笔,记录一下曾经搭建过的环境,免得以后自己忘记了.也给和 ...

  8. Hive On Spark保姆级攻略

    声明: 此博客参考了官网的配置方式,并结合笔者在实践网上部分帖子时的踩坑经历整理而成 这里贴上官方配置说明: [官方]: https://cwiki.apache.org//confluence/di ...

  9. Spark踩坑记——Spark Streaming+Kafka

    [TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...

随机推荐

  1. 04C++const增强、枚举的增强

    #include <iostream> int main(void) { //const定义常量--->const意味着只读 const int a; int const b; // ...

  2. WinForm中执行JS代码(多种方法)

    方法一 使用微软官方组件Interop.MSScriptControl 1.msscript.ocx下载的地址   http://www.microsoft.com/downloads/details ...

  3. 深入详解美团点评CAT跨语言服务监控(九)CAT管理平台MVC框架

    在第2章我们讲到,服务器在初始化CatServlet 之后, 会初始化 MVC,MVC也是继承自AbstractContainerServlet , 同样也是一个 Servlet 容器,这是一个非常古 ...

  4. mysql之 sysbench1.0.3 安装与系统压力测试

    针对系统和数据库压测是项目上线前必做的一项,这里使用的是最新版本的sysbench做的压测使用详解.sysbench可以做系统层面的压力测试(CPU.内存.硬盘IO.互斥锁.Thead),也可以做数据 ...

  5. react-router v4.0 知识点

    react-router 提供了一个withRouter组件 withRouter可以包装任何自定义组件,将react-router 的 history,location,match 三个对象传入. ...

  6. 阿里云 qW3xT.4 挖矿病毒问题

    查了一下.是个挖矿病毒,cpu 占用巨高 .杀了又有守护进程启动.网上有些杀死这个病毒的办法,大家可以试试.但是不确定能杀死. 建议直接重装系统. 然后,说说这货怎么传播的. 他通过redis .目前 ...

  7. Request method 'POST' not supported

    总是报错,原来是form表单的锅,赶紧删了.

  8. System Generator 使用离散资源

    System Generator 使用离散资源 重要,怎样配置FPGA中的DSP Macro 最后是编译模型

  9. ubuntu-docker入门到放弃(三)images镜像管理

    docker虽然有公共的镜像管理hub,但是我们在日常的使用中,由于不同的业务场景,不同的架构,公共的镜像库不能满足需求,并且出于安全考虑,会搭建私有的docker hub镜像库来管理自己的image ...

  10. C/C++中字符串和数字互转小结

    一. 数字 转 char*型 1.sprintf函数(适合C和C++) 示例: char str[50]; int num = 345; sprintf(str,"%d",num) ...