成功实现了:Hive-2.3.2 on spark-2.0.0 编译安装配置-详细流程

首先说明一下hive on spark的版本信息:

jdk-1.8.0

scala-2.11.8

apache-hive-2.3,2.tar.gz

Hadoop-2.7.1

spark-2.0.0-src

maven-3.6.0 注意需要配置maven源(最好配置国内源信息,这样下载会比较快)

下面的配置信息是在maven/conf/settings文件的160行的位置加入。

<mirror>

       <id>nexus-aliyun</id>

    <mirrorOf>central</mirrorOf>

    <name>Nexus aliyun</name>

     <url>http://maven.aliyun.com/nexus/content/groups/public</url>

 

</mirror>  

 

还有hive的安装包,spark-2.0.0的源码包,下面给出我编译好的。链接:

链接:https://pan.baidu.com/s/1HLby39saTvIUOb0j8GkhiA

提取码:3gsy

上面是spark的编译包

下面是apache-hive-2.3.2

http://archive.apache.org/dist/hive/hive-2.3.2/  或者到这个链接地址下载

链接:https://pan.baidu.com/s/1Q4Sq41k_YI19DSBQQIdUuQ

提取码:r056

1、单机版本 :

   1.1安装hadoop2.7.1 伪分布式安装

       1.1.1修改配置文件

 Hadoop-env.sh

                修改JAVA_HOME=export JAVA_HOME=/usr/local/jdk1.7.0_45

core-site.xml

<property>

<name>fs.defaultFS</name>

<value>hdfs://mini01:9000</value>

</property>

<property>

<name>hadoop.tmp.dir</name>  文件存储的名称

<value>/home/hadoop/hdpdata</value>  文件的存储路径

</property>

yarn-site.xml

<property>

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

<value>mini07</value>

</property>

 

<property>

//reduce获取数据的方式 shuffle

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

<value>mapreduce_shuffle</value>

</property>

hdfs-site.xml

<property>

<name>dfs.replication</name>  block的副本数  默认是3个

<value>2</value>

</property>

mapred-site.xml

<property>

<name>mapreduce.framework.name</name> 表示mapreduce运行在yarn上面

<value>yarn</value>

</property>

savles

//存放的是datanode的节点名称

localhost

 1.1.2配置环境变量

  cd /etc/profile

  export HADOOP_HOME=…..

  source /etc/profile

1.1.3格式namenode

    操作: hdfs namenode -format

  

common.Storage: Storage directory /home/hadoop/hdpdata/dfs/name has been successfully formatted.  //表示格式化成功

 

1.1.4启动hadoop伪分布式

cd 到hadoop目录的/sbin/start-all.sh

2、spark编译

二.下载源码spark2.0.0,编译

下载地址:http://archive.apache.org/dist/spark/spark-2.0.0/

编译: ./dev/make-distribution.sh --name "hadoop2-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.7,parquet-provided"

三.将编译好的spark-2.0.0-bin-hadoop2-without-hive.tgz

tar -zxvf  spark-2.0.0-bin-hadoop2-without-hive.tgz -C /home/Hadoop/apps/

 

在/etc/profile里配置好 $SPARK_HOME环境变量,并 . /etc/profile使环境变量生效。

export JAVA_HOME=/usr/local/jdk1.8.0_171

export SCALA_HOME=/usr/local/scala-2.11.8

export HADOOP_HOME=/home/hadoop/apps/hadoop-2.7.1

export ZOOKEEPER_HOME=/home/hadoop/apps/zookeeper-3.4.7

export MAVEN_HOME=/home/hadoop/apps/apache-maven-3.6.0

export SPARK_HOME=/home/hadoop/apps/spark-2.0.0-bin-hadoop2-without-hive

export HIVE_HOME=/home/hadoop/apps/apache-hive-2.3.2-bin

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SCALA_HOME/bin:$MAVEN_HOME/bin:$SPARK_HOME/bin:$HIVE_HOME/bin:$ZOOKEEPER_HOME/bin

 

上面是整个环境变量的配置

编辑spark的配置文件 cd /spark/conf

spark-env.sh

export JAVA_HOME=/usr/local/jdk1.8.0_171

export SCALA_HOME=/usr/local/scala-2.11.8

export HADOOP_HOME=/home/hadoop/apps/hadoop-2.7.1

export HADOOP_CONF_DIR=/home/hadoop/apps/hadoop-2.7.1/etc/hadoop

export HADOOP_YARN_CONF_DIR=/home/hadoop/apps/hadoop-2.7.1/etc/hadoop

export SPARK_HOME=/home/hadoop/apps/spark-2.0.0-bin-hadoop2-without-hive

export SPARK_WORKER_MEMORY=512m

export SPARK_EXECUTOR_MEMORY=512m

export SPARK_DRIVER_MEMORY=512m

export SPARK_DIST_CLASSPATH=$(/home/hadoop/apps/hadoop-2.7.1/bin/hadoop classpath)

3) 把spark/jars/*.jar 全部上传到hdfs的目录下,这样在每次run application 的时候,不需要每次都去分发这些jar包资源。

hdfs dfs -mkdir /spark-jars

hdfs dfs -put ./jars/*.jar /spark-jars

4) 启动spark进行验证:

  start-all.sh

看web UI

5) 安装配置hive

  首先在mysql数据库里面创建hive数据库和相关的用户  该数据库是用来保存hive的元数据信息的。

*)创建一个新的数据库:create database hive;

*)创建一个新的用户:

 create user 'hiveowner'@'%' identified by ‘hive’; //表示用户名hiveowner pass: hive

*)给该用户授权

    grant all on hive.* TO 'hiveowner'@'%';

   grant all on hive.* TO 'hiveowner'@'localhost' identified by 'hive';

6) 设置hive的环境变量 这个前面已经弄过了。

7) 拷贝spark下的jar包到hive的lib下

cp scala-library-2.11.8.jar /usr/share/hive-2.3.3/lib/

cp spark-core_2.11-2.0.0.jar /usr/share/hive-2.3.3/lib/

cp spark-network-common_2.11-2.0.0.jar /usr/share/hive-2.3.3/lib/

8)在HDFS上创建目录:/sparkeventlog用于保存log信息

hdfs dfs -mkdir /spark-log  //记录日志信息  

9) 配置hive的hive-site.xml

cp hive-defaults.xml.template hiev-site.xml

vi hive-site.xml

这里只是给出相关的设置以及会报错的配置

<property>

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

    <value>jdbc:mysql://localhost:3306/hive?useSSL=false</value>

  </property>

<property>

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

    <value>hive</value>

    <description>password to use against metastore database</description>

  </property>

<property>

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

    <value>hiveowner</value>

    <description>Username to use against metastore database</description>

  </property>

<property>

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

    <value>com.mysql.jdbc.Driver</value>

    <description>Driver class name for a JDBC metastore</description>

  </property>

<property>

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

    <value>spark</value>

    <description>

      Expects one of [mr, tez, spark].

      Chooses execution engine. Options are: mr (Map reduce, default), tez, spark. While MR

      remains the default engine for historical reasons, it is itself a historical engine

      and is deprecated in Hive 2 line. It may be removed without further warning.

    </description>

  </property>

<property>

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

     <value>true</value>

  </property>

  <property>

     <name>spark.home</name>

     <value>/home/hadoop/apps/spark-2.0.0-bin-hadoop2-without-hive</value>

  </property>

  <property>

     <name>spark.master</name>

     <value>yarn-client</value>

  </property>

  <property>

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

     <value>true</value>

  </property>

  <property>

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

     <value>hdfs://mini07:9000/spark-log</value>

  </property>

  <property>

     <name>spark.serializer</name>

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

  </property>

 

  <property>

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

     <value>512m</value>

  </property>

  <property>

     <name>spark.driver.memory</name>

     <value>512m</value>

  </property>

其他的保持原来的默认的。即可ok

10) 进入到hive的bin目录下面

./schemTool -dbType mysql -initSchema 

然后执行./hive 

use test01;

create table emp1(emp int, ename string) row foemat delimited fields terminated by ‘,’;

load data local inpath ‘/home/Hadoop/data01.txt’ into table emp1;

select count(1) from emp1;

注意这里会报错的:

检查Yarn web console

查看历史信息,我们会发现:

这个错误的原因是由于yarn的虚拟内存计算而导致的错误,我们需要修改信息,在hadoop的配置文件yarn-site.xml里面添加配置信息:

<property>

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

        <value>false</value>

   <description>表示是进制虚拟内存检查</description>

</property>

重新启动hadoop hive  spark

执行hive操作

select count(1)  from emp1;

use 我们在yarn的web console查看 :如下

在看看hive的客户端执行的结果:

这个截图里面是两次执行的结果:结果返回10,这个表里面刚好是10条数据:

在看看查询的时间消耗上 在第一次执行的时候会比较慢,第二次的话就会很快,这个中间是有sql的缓存。

11) 此时其实我们可以把spark集群关闭了。然后还是依然可以执行的。

所以现在我们把hive的执行引擎换成了spark。下次要是只是利用hive的话,则完全没有必要去启动spark集群了。

12) 说一下hadoop的伪分布式安装配置信息:如下图所示:

 

猜你喜欢

转载自blog.csdn.net/tryll/article/details/85234700