Hive on Spark

Hive On Spark

一、概述

Hive 是一种数据仓库,即是一种sql翻译器,hive可以将sql翻译成mapreduce程序在hadoop中去执行,默认支持原生的Mapreduce引擎。从hive1.1版本以后开始支持Spark。可以将sql翻译成RDD在spark里面执行。Hive支持的spark是那种spark-without-hive,即没有编译支持hive包的spark。

二、安装版本及软件

需要安装:scala-2.12、jdk1.8、hive-2.1.1、spark-1.6.3-bin-hadoop2.4-without-hive、hadoop-2.x.本例用的hadoop-2.7.3

三、安装前的准备

1、下载软件

1)下载scala-2.12

https://downloads.lightbend.com/scala/2.12.3/scala-2.12.3.tgz

2)下载hive-2.1.1

http://mirror.bit.edu.cn/apache/hive/stable-2/apache-hive-2.1.1-bin.tar.gz

3)下载spark-1.6.3-bin-hadoop2.4-without-hive

http://mirror.bit.edu.cn/apache/spark/spark-1.6.3/spark-1.6.3-bin-hadoop2.4-without-hive.tgz

4)下载hadoop-2.7.3

https://hadoop.apache.org/releases.html

四、  安装

创建一个目录,将所有的包都解压到该目录下,统一配置。

做完上述步骤后,按如下方式添加环境变量:

# cat /etc/profile

export JAVA_HOME=/usr/local/java

export PATH=$JAVA_HOME/bin:/usr/local/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export SCALA_HOME=/usr/share/scala/

export HADOOP_HOME=/da/hadoop-2.7.3/

export PATH="$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH"

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop

export SPARK_HOME=/da/spark-1.6.3-bin-hadoop2.4-without-hive

export PATH="$SPARK_HOME/bin:$PATH"

export CLASSPATH=.:${JAVA_HOME}/lib:${SCALA_HOME}/lib:${HIVE_HOME}/lib:$CLASSPATH

# source /etc/profile

1、  hadoop安装和启动

1)  设置免密码登录

# ssh-keygen –t rsa

一路回车

会在当前用户的家目录下的.shh目录下生成密钥和公钥(id_rsa、id_rsa.pub)

在.ssh目录下创建authorithed.keys文件,将id_rsa.pub文件内容copy到authorithed.keys里面:

#cat id_rsa.pub >authorithed.keys

并修改权限为600:

#chmod 600 authorithed.keys

2)  创建需要用到的目录

#mkdir /da/Hadoop/{tmp,var,dfs}

#mkdir /da/Hadoop/dfs/{name,data}

3)  修改配置文件

!修改core-site.xml

<property>

<name>hadoop.tmp.dir</name>

<value>/da/hadoop/tmp</value>

</property>

<property>

<name>fs.default.name</name>

<value>hdfs://192.168.1.11:9000</value>

</property>

!修改hadoop-env.sh

将export   JAVA_HOME=${JAVA_HOME}  修改为:

export JAVA_HOME=/usr/local/java

!修改hdfs-site.xml

<property>

<name>dfs.name.dir</name>

<value>/da/hadoop/dfs/name</value>

</property>

<property>

<name>dfs.data.dir</name>

<value>/da/hadoop/dfs/data</value>

</property>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

<property>

<name>dfs.permissions</name>

<value>false</value>

</property>

!在该版本中,有一个名为mapred-site.xml.template的文件,复制该文件,然后改名为mapred-site.xml,并进行修改:

# cp mapred-site.xml.template mapred-site.xml

# cat mapred-site.xml

<property>

<name>mapred.job.tracker</name>

<value>192.168.1.11:49001</value>

</property>

<property>

<name>mapred.local.dir</name>

<value>/da/hadoop/var</value>

</property>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

!修改yarn-site.xml

<property>

<name>yarn.resourcemanager.hostname</name>

<value>192.168.1.11</value>

</property>

<property>

<name>yarn.resourcemanager.address</name>

<value>${yarn.resourcemanager.hostname}:8032</value>

</property>

<property>

<name>yarn.resourcemanager.scheduler.address</name>

<value>${yarn.resourcemanager.hostname}:8030</value>

</property>

<property>

<name>yarn.resourcemanager.webapp.address</name>

<value>${yarn.resourcemanager.hostname}:8088</value>

</property>

<property>

<name>yarn.resourcemanager.webapp.https.address</name>

<value>${yarn.resourcemanager.hostname}:8090</value>

</property>

<property>

<name>yarn.resourcemanager.resource-tracker.address</name>

<value>${yarn.resourcemanager.hostname}:8031</value>

</property>

<property>

<name>yarn.resourcemanager.admin.address</name>

<value>${yarn.resourcemanager.hostname}:8033</value>

</property>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<property>

<name>yarn.scheduler.maximum-allocation-mb</name>

<value>8182</value>

</property>

<property>

<name>yarn.nodemanager.vmem-pmem-ratio</name>

<value>3.1</value>

</property>

<property>

<name>yarn.nodemanager.resource.memory-mb</name>

<value>2048</value>

</property>

<property>

<name>yarn.nodemanager.vmem-check-enabled</name>

<value>false</value>

</property>

# 内存越大越好,这里只是做测试。

2、启动hadoop

如果是第一次启动hadoop,在启动之前需要先进行初始化。

# hadoop  namenode –format

!!!初始化操作只进行一次

接下来进入到sbin目录下:

# ./start-all.sh

!!可以直接访问如下地址:

http://ip:50070、http://ip:50090、http://ip:8088

2、  安装配置spark

修改conf文件夹下的如下文件:

!#cp   spark-env.sh.template   spark-env.sh

export SCALA_HOME=/usr/share/scala/

export JAVA_HOME=/usr/local/java

export HADOOP_HOME=/da/hadoop-2.7.3/

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export SPARK_HOME=/da/spark-1.6.3-bin-hadoop2.4-without-hive

export SPARK_MASTER_IP=192.168.1.11

export SPARK_EXECUTOR_MEMORY=2048m

!#cp   spark-defaults.conf.template   spark-defaults.conf

spark.master                     spark://192.168.1.11:7077

spark.eventLog.enabled           true

spark.eventLog.dir               hdfs://192.168.1.11:8021/directory

spark.serializer                 org.apache.spark.serializer.KryoSerializer

spark.driver.memory             2048M

spark.executor.extraJavaOptions  -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"

1)       在HDFS上创建目录

因为上面的配置中让spark将eventLog存到HDFS的directory目录下,所以需要执行hadoop命令,在HDFS上创建directory目录,创建目录命令是:

#hadoop   fs  -mkdir  -p   /directory

#hadoop   fs  -chmod  777  /directory

2)  启动spark

到sbin目录下:

# ./start-all.sh

!!!可以访问如下地址:

http://ip:8080

3、  配置hive

1)  创建HDFS目录

hive的文件存储在hadoop提供的HDFS分布式文件系统里,需要调用hadoop命令,在hdfs上创建几个目录。

#hadoop   fs   -mkdir  -p   /da/hive/warehouse

#hadoop  fs   -chmod   777   /da/hive/warehouse

#hadoop   fs   -mkdir -p   /tmp/hive

#hadoop   fs   -chmod 777  /tmp/hive

2)       修改配置文件

!#cp    hive-env.sh.template    hive-env.sh

export HADOOP_HOME=/da/hadoop-2.7.3/

export HIVE_CONF_DIR=/da/apache-hive-2.1.1-bin/conf

export HIVE_AUX_JARS_PATH=/da/apache-hive-2.1.1-bin/lib

!#cp  hive-default.xml.template  hive-site.xml

<property>

<name>hive.execution.engine</name>

<value>spark</value>

</property>

<property>

<name>hive.metastore.schema.verification</name>

<value>false</value>

</property>

<property>

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://192.168.1.11:3306/hive?createDatabaseIfNotExist=true</value>

</property>

<property>

<name>javax.jdo.option.ConnectionUserName</name>

<value>root</value>

</property>

<property>

<name>javax.jdo.option.ConnectionPassword</name>

<value>1qaz*@WSX</value>

</property>

<property>

<name>hive.enable.spark.execution.engine</name>

<value>true</value>

</property>

<property>

<name>spark.home</name>

<value>/da/spark-1.6.3-bin-hadoop2.4-without-hive</value>

</property>

<property>

<name>spark.master</name>

<value>spark://192.168.1.11:7077</value>

</property>

<property>

<name>spark.submit.deployMode</name>

<value>client</value>

</property>

<property>

<name>spark.serializer</name>

<value>org.apache.spark.serializer.KryoSerializer</value>

</property>

<property>

<name>spark.eventLog.enabled</name>

<value>true</value>

</property>

<property>

<name>spark.eventLog.dir</name>

<value>hdfs://192.168.1.11:9000/directory</value>

</property>

<property>

<name>spark.executor.memory</name>

<value>2048m</value>

</property>

3)       将mysql驱动包copy到hive的llib目录下:

!自己去网上下载mysql-connector-java-5.1.43-bin.jar

# cp mysql-connector-java-5.1.43-bin.jar  /da/apache-hive-2.1.1-bin /lib

4)       将/da/spark-1.6.3-bin-hadoop2.4-without-hive/lib目录下的spark-assembly-1.6.3-hadoop2.4.0.jar包拷贝到/da/apache-hive-2.1.1-bin/lib目录下。

# cp /da/spark-1.6.3-bin-hadoop2.4-without-hive/lib/spark-assembly-1.6.3-hadoop2.4.0.jar /da/apache-hive-2.1.1-bin/lib

4、  初始化hive元数据库

进入到hive的bin目录下:

# ./schematool  -initSchema  -dbType  mysql

5、  启动hive,进入hive的bin目录

#./hive

6、  创建一张表

  1. >create table  test(id int, name string)ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t‘ STORED AS TEXTFILE;
  2. ‘\t‘表示此表的内容是以制表符分割的,所以不能使用空格,否则不识别数据。

添加一些数据到表test里面

#vim /da/test.txt

1           test1

2           test2

3           test3

>load data local inpath‘/da/test.txt‘ into table test;

7、  对hive on spark进行测试

>select  count(*)  from  test;

如果该命令能够正确执行,证明部署成功。

如果Hive On Spark运行成功,可以在spark的UI界面上查看, Hive中成功调用了Spark集群来执行任务。访问下面的地址:http://ip:8080/

时间: 2024-10-12 22:51:24

Hive on Spark的相关文章

Apache Spark源码走读之12 -- Hive on Spark运行环境搭建

欢迎转载,转载请注明出处,徽沪一郎. 楔子 Hive是基于Hadoop的开源数据仓库工具,提供了类似于SQL的HiveQL语言,使得上层的数据分析人员不用知道太多MapReduce的知识就能对存储于Hdfs中的海量数据进行分析.由于这一特性而收到广泛的欢迎. Hive的整体框架中有一个重要的模块是执行模块,这一部分是用Hadoop中MapReduce计算框架来实现,因而在处理速度上不是非常令人满意.由于Spark出色的处理速度,有人已经成功将HiveQL的执行利用Spark来运行,这就是已经非常

hive on Spark部署

一.环境 1.zk集群 10.10.103.144:2181,10.10.103.246:2181,10.10.103.62:2181 2.metastore数据库 10.10.103.246:3306 二.安装 1.安装配置数据库 yum -y install mysql55-server mysql55 GRANT ALL PRIVILEGES ON metastore.* TO 'hive'@'localhost' IDENTIFIED BY 'hive'; GRANT ALL PRIVI

关于hive和spark日志问题

在用控制台学习hive和spark的时候,总是打印出来的各种日志烦得不行(对我而言).所以就想把着写我不关心的信息屏蔽掉,只保留错误信息.其实输出的日志信息还是很有用的,因为里面的日志信息可以清楚的描述任务执行的过程和细节.对hive和spark基本运行原理有了了解之后,我觉得完全可以屏蔽掉这些信息. 于是寻找教程,搞了一把.主要就是修改log4j.properties这个文件 没处理之前是这个样子的: 处理之后是这个样子的: 具体的怎么设置,看下面的博文吧,很详细. http://blog.c

hive on spark 编译

前置条件说明 Hive on Spark是Hive跑在Spark上,用的是Spark执行引擎,而不是MapReduce,和Hive on Tez的道理一样. 从Hive 1.1版本开始,Hive on Spark已经成为Hive代码的一部分了,并且在spark分支上面,可以看这里https://github.com/apache/hive/tree/spark,并会定期的移到master分支上面去. 关于Hive on Spark的讨论和进度,可以看这里https://issues.apache

Hive on Spark安装与配置(无数坑)

一.版本如下    注意:Hive on Spark对版本有着严格的要求,下面的版本是经过验证的版本 apache-hive-2.3.2-bin.tar.gz hadoop-2.7.2.tar.gz jdk-8u144-linux-x64.tar.gz mysql-5.7.19-1.el7.x86_64.rpm-bundle.tar mysql-connector-java-5.1.43-bin.jar spark-2.0.0.tgz(spark源码包,需要从源码编译) Redhat Linux

spark 2.0.0集群安装与hive on spark配置

1. 环境准备: JDK1.8 hive 2.3.4 hadoop 2.7.3 hbase 1.3.3 scala 2.11.12 mysql5.7 2. 下载spark2.0.0 cd /home/worksapce/software wget https://archive.apache.org/dist/spark/spark-2.0.0/spark-2.0.0-bin-hadoop2.7.tgz tar -xzvf spark-2.0.0-bin-hadoop2.7.tgz mv spa

关于hive on spark会话的共享状态

spark sql中有一个类: org.apache.spark.sql.internal.SharedState 它是用来做: 1.元数据地址管理(warehousePath) 2.查询结果缓存管理(cacheManager) 3.程序中的执行状态和metrics的监控(statusStore) 4.默认元数据库的目录管理(externalCatalog) 5.全局视图管理(主要是防止元数据库中存在重复)(globalTempViewManager) 1:首先介绍元数据地址管理(warehou

伪分布式Spark + Hive on Spark搭建

Spark大数据平台有使用一段时间了,但大部分都是用于实验而搭建起来用的,搭建过Spark完全分布式,也搭建过用于测试的伪分布式.现在是写一遍随笔,记录一下曾经搭建过的环境,免得以后自己忘记了.也给和初学者以及曾经挖过坑的人用作参考. Hive on Spark是Hive跑在Spark上,用的是Spark执行引擎,而不是默认的MapReduce. 可以查阅官网的资源Hive on Spark: Getting Started. 一 .安装基础环境 1.1 Java1.8环境搭建 1) 下载jdk

hive安装以及hive on spark

spark由于一些链式的操作,spark 2.1目前只支持hive1.2.1 hive 1.2安装 到http://mirror.bit.edu.cn/apache/hive/hive-1.2.1/ 网址下载hive1.2.1的部署包 2.配置系统环境变量/etc/profile export HIVE_HOME=/opt/hive-1.2.1 export PATH=$PATH:$HIVE_HOME/bin source /etc/profile 使刚刚的配置生效 3. 解压 tar -xvf