热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SparkOnHive部署和配置

SparkOnHive,通过sparksql模块访问和使用Hive,默认Spark预编译(pre-built)版不包含hive相关依赖,并不支持此功能,因此需要对spark源码进行

Spark On Hive,通过spark sql模块访问和使用Hive,默认Spark预编译(pre-built)版不包含hive相关依赖,并不支持此功能,因此需要对spark源码进行重新编译,并进行相关的配置,下面是具体操作步骤:

1.下载最新版spark源码包

http://spark.apache.org/downloads.html

cd /data/soft/
wget -c http://apache.fayea.com/spark/spark-1.5.2/spark-1.5.2.tgz
tar -xzf spark-1.5.2.tgz

2.编译Spark源码

根据自己需要的hadoop版本进行编译并打成分发包

cd spark-1.5.2
./make-distribution.sh --tgz --name 2.3.0 -Pyarn -Phadoop-2.3 -Dhadoop.version=2.3.0 -Phive -Phive-thriftserver

主要是通过maven进行编译,所以要下载很多依赖包,这个过程非常痛苦和漫长,可以先看一下spark-1.5.2/pom.xml文件,看看整合了哪些module,如果编译过程中报错,链接超时或者依赖包长时间无法下载,可以重试几次,或者手动在各个整合的module下面,进行预编译。

执行成功之后,会在生成一个分发包spark-1.5.2/spark-1.5.2-bin-2.3.0.tgz(注意这个包名称中的2.3.0就是前面执行命令中-name参数制定的名称)

3.部署Spark环境

mkdir /data/hadoop/
tar -xzf spark-1.5.2/spark-1.5.2-bin-2.3.0.tgz -C /data/hadoop/

4.确保Hive正常

我的Hive部署在/data/hadoop/hive-0.12.0-cdh5.1.0/
通过执行bin/hive进入hive交互环境,执行一下HQL语句看是否能够执行成功。

5.Spark on Hive配置

复制hive-site.xml文件到spark-1.5.2-bin-2.3.0/conf/下面

cp /data/hadoop/hive-0.12.0-cdh5.1.0/hive-site.xml /data/hadoop/spark-1.5.2-bin-2.3.0/conf/

修改spark-env.sh文件,添加如下配置(基于前一篇《Spark环境部署》配置基础上):
注:根据自己服务器环境情况配置

export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.79.x86_64
export HADOOP_HOME=/data/hadoop/hadoop-2.3.0-cdh5.1.0
export HADOOP_CONF_DIR=/data/hadoop/hadoop-2.3.0-cdh5.1.0/etc/hadoop
export YARN_CONF_DIR=/data/hadoop/hadoop-2.3.0-cdh5.1.0/etc/hadoop
export HIVE_HOME=/data/hadoop/hive-0.12.0-cdh5.1.0
export SCALA_HOME=/usr/local/scala-2.11.7
export SPARK_HOME=/data/hadoop/spark-1.5.2-bin-2.3.0
export SPARK_MASTER_IP=host20
export SPARK_MASTER_PORT=7077
export PYSPARK_PYTHON=/usr/local/bin/python2.7
export PYSPARK_DRIVER_PYTHON=/usr/local/bin/python2.7
export SPARK_LOCAL_IP=host20
export SPARK_YARN_QUEUE=hadoop
export SPARK_WORKER_CORES=10
export SPARK_WORKER_INSTANCES=1
export SPARK_WORKER_MEMORY=30G
export SPARK_WORKER_WEBUI_PORT=8081
export SPARK_EXECUTOR_CORES=1
export SPARK_EXECUTOR_MEMORY=5G
export SPARK_CLASSPATH=$SPARK_CLASSPATH:$HIVE_HOME/lib/mysql-connector-java-5.1.20-bin.jar

修改/etc/profile文件,添加如下配置(基于前一篇《Spark环境部署》配置基础上):
注:根据自己服务器环境情况配置

export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.19.x86_64
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export SCALA_HOME=/usr/local/scala-2.11.7
export PATH=$PATH:$SCALA_HOME/bin
export SPARK_HOME=/data/hadoop/spark-1.5.2-bin-2.3.0
export PATH=$PATH:$SPARK_HOME/bin
export HADOOP_HOME=/data/hadoop/hadoop-2.3.0-cdh5.1.0
export PATH=$PATH:$HADOOP_HOME/bin

下面列出来我的hive-site.xml文件主要配置:


javax.jdo.option.ConnectionURL
jdbc:mysql://host220:3306/hive?createDatabaseIfNotExist=true


javax.jdo.option.ConnectionUserName
hive


javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
Driver class name for a JDBC metastore


javax.jdo.option.ConnectionPassword
hive


hive.metastore.local
false



hive.metastore.warehouse.dir
hdfs://mycluster/hive/warehouse

注意:注释部分后面会介绍

6.通过jdbc方式直接访问Hive

启动master和worker

sbin/start-master.sh
sbin/start-slave.sh spark://host20:7077

使用spark-sql访问hive
bin/spark-sql –executor-cores 2 –total-executor-cores 4 –master spark://host20:7077
进来之后可以执行一下HQL语句,查看是否能访问到Hive中的数据

使用pyspark访问hive

bin/pyspark
>>> from pyspark.sql import HiveContext
>>> sqlCOntext=HiveContext(sc)
>>> results=sqlContext.sql("show databases").collect()

7.通过thrift方式间接访问Hive

需要配置启动hive metastore服务和spark的thriftserver

修改/data/hadoop/hive-0.12.0-cdh5.1.0/hive-site.xml,添加如下配置:


hive.metastore.uris
thrift://host20:9083


hive.server2.thrift.port
10000
Port number of HiveServer2 Thrift interface. Can be overridden by setting $HIVE_SERVER2_THRIFT_PORT


hive.server2.thrift.bind.host
host20
Bind host on which to run the HiveServer2 Thrift interface.Can be overridden by setting$HIVE_SERVER2_THRIFT_BIND_HOST

并将新的hive-site.xml文件,替换掉spark下面的hive-site.xml文件,同步配置。

cp /data/hadoop/hive-0.12.0-cdh5.1.0/hive-site.xml /data/hadoop/spark-1.5.2-bin-2.3.0/conf/

启动metastore服务

./hive --service metastore > metastore.log 2>&1 &

启动spark的thriftserver

sbin/start-thriftserver.sh --executor-cores 2 --total-executor-cores 2 --master spark://host20:7077

8.集群部署

在其他服务器上,同步/data/soft/目录下面的spark-1.5.2-bin-2.3.0.tar.gz和hive-0.12.0-cdh5.1.0.tar.gz文件

rsync -az --include "soft/" --exclude "/*" host20::data /data/

每个服务器上执行下面的步骤

tar -xzf /data/soft/spark-1.5.2-bin-2.3.0.tar.gz -C /data/hadoop/
tar -xzf /data/soft/hive-0.12.0-cdh5.1.0.tar.gz -C /data/hadoop/

修改spark-env.sh中的配置与本服务器环境一致。


推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 如何在mysqlshell命令中执行sql命令行本文介绍MySQL8.0shell子模块Util的两个导入特性importTableimport_table(JS和python版本 ... [详细]
  • CentOS 7配置SSH远程访问及控制
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  •     这里使用自己编译的hadoop-2.7.0版本部署在windows上,记得几年前,部署hadoop需要借助于cygwin,还需要开启ssh服务,最近发现,原来不需要借助cy ... [详细]
  • 什么是大数据lambda架构
    一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数 ... [详细]
  • Hadoop 源码学习笔记(4)Hdfs 数据读写流程分析
    Hdfs的数据模型在对读写流程进行分析之前,我们需要先对Hdfs的数据模型有一个简单的认知。数据模型如上图所示,在NameNode中有一个唯一的FSDirectory类负责维护文件 ... [详细]
  • LVS-DR直接路由实现负载均衡示例
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • MR程序的几种提交运行模式本地模型运行1在windows的eclipse里面直接运行main方法,就会将job提交给本地执行器localjobrunner执行-- ... [详细]
author-avatar
孽尐星_186
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有