hadoop分布式系统中怎么安装hive

hadoop分布式系统中怎么安装hive,第1张

Hive是基于Hadoop构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在hadoop 分布式文件系统中的数据。其在Hadoop的架构体系中承担了一个SQL解析的过程,它提供了对外的入口来获取用户的指令然后对指令进行分析,解析出一个MapReduce程序组成可执行计划,并按照该计划生成对应的MapReduce任务提交给Hadoop集群处理,获取最终的结果。元数据——如表模式——存储在名为metastore的数据库中。

系统环境

ip地址1 hadoop-master

ip地址2 hadoop-slave

MySQL安装在master机器上,hive服务器也安装在master上

Hive下载

下载源码包,最新版本可自行去官网下载

[hadoop@hadoop-master ~]$ wget hive的下载地址

[hadoop@hadoop-master ~]$ tar -zxf apache-hive-1.2.1-bin.tar.gz 

[hadoop@hadoop-master ~]$ ls

apache-hive-1.2.1-bin  apache-hive-1.2.1-bin.tar.gz  dfs  hadoop-2.7.1  Hsource  tmp12341234 配置环境变量 [root@hadoop-master hadoop]# vi /etc/profile

HIVE_HOME=/home/hadoop/apache-hive-1.2.1-bin

PATH=$PATH:$HIVE_HOME/bin

export HIVE_NAME PATH Metastore

metastore是hive元数据集中存放地。它包括两部分:服务和后台数据存储。有三种方式配置metastore:内嵌metastore、本地metastore以及远程metastore。 

本次搭建中采用MySQL作为远程仓库,部署在hadoop-master节点上,hive服务端也安装在hive-master上,hive客户端即hadoop-slave访问hive服务器。

创建Hive用户 mysql>CREATE USER 'hive' IDENTIFIED BY 'hive'

mysql>GRANT ALL PRIVILEGES ON *.* TO 'hive'@'hadoop-master' WITH GRANT OPTION

mysql>flush privileges123123 Hive用户登录 [hadoop@hadoop-master ~]mysql -h hadoop-master -uhive

mysql>set password = password('hive')1212 创建Hive数据库 mysql>create database hive 配置Hive

修改配置文件 

进入到hive的配置文件目录下,找到hive-default.xml.template,cp份为hive-default.xml 

另创建hive-site.xml并添加参数

[hadoop@hadoop-master conf]$ pwd

/home/hadoop/apache-hive-1.2.1-bin/conf

[hadoop@hadoop-master conf]$ vi hive-site.xml

<configuration>

    <property>

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

        <value>jdbc:mysql://hadoop-master:3306/hive?createDatabaseIfNotExist=true</value>

        <description>JDBC connect string for a JDBC metastore</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>javax.jdo.option.ConnectionUserName</name>

        <value>hive<value>

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

    </property>

    <property>  

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

        <value>hive</value>

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

    </property>          

</configuration> Hive客户端配置 [hadoop@hadoop-master ~]$ scp -r apache-hive-1.2.1-bin/ hadoop@hadoop-slave:/home/hadoop

[hadoop@hadoop-slave conf]$ vi hive-site.xml

<configuration>

    <property>  

        <name>hive.metastore.uris</name>  

    <value>thrift://hadoop-master:9083</value>  

    </property>

</configuration> Hive启动

要启动metastore服务

[hadoop@hadoop-master ~]$ hive --service metastore &

[hadoop@hadoop-master ~]$ jps

10288 RunJar  #多了一个进程

9365 NameNode

9670 SecondaryNameNode

11096 Jps

9944 NodeManager

9838 ResourceManager

9471 DataNode Hive服务器端访问 [hadoop@hadoop-master ~]$ hive

Logging initialized using configuration in jar:file:/home/hadoop/apache-hive-1.2.1-bin/lib/hive-common-1.2.1.jar!/hive-log4j.properties

hive> show databases

OK

default

src

Time taken: 1.332 seconds, Fetched: 2 row(s)

hive> use src

OK

Time taken: 0.037 seconds

hive> create table test1(id int)

OK

Time taken: 0.572 seconds

hive> show tables

OK

abc

test

test1

Time taken: 0.057 seconds, Fetched: 3 row(s)

hive> Hive客户端访问 [hadoop@hadoop-slave conf]$ hive

Logging initialized using configuration in jar:file:/home/hadoop/apache-hive-1.2.1-bin/lib/hive-common-1.2.1.jar!/hive-log4j.properties

hive> show databases

OK

default

src

Time taken: 1.022 seconds, Fetched: 2 row(s)

hive> use src

OK

Time taken: 0.057 seconds

hive> show tables

OK

abc

test

test1

Time taken: 0.218 seconds, Fetched: 3 row(s)

hive> create table test2(id int ,name string)

OK

Time taken: 5.518 seconds

hive> show tables

OK

abc

test

test1

test2

Time taken: 0.102 seconds, Fetched: 4 row(s)

1、下载Hive软件。如果下载hive-211,可直接进行下一步。如果下载hive-235,需要将缺失的cmd文件放入bin目录下。

2、配置Hive系统变量和环境变量。

3、下载MySQL驱动(mysql-connector-java-5145),放置到目录下。

4、在Hadoop上创建HDFS目录。调出CMD终端,输入以下命令

5、创建相关目录。

6、将模板文件另存为hive-sitexml,并修改文件hive-sitexml内容。Hive相关目录设置,数据库相关设置。

7、在MySQL下创建数据库。

8、启动Hadoop,即在hadoop的sbin目录下调出CMD输入命令start-dfscmd。

9、启动Hivemetastore服务,即调出CMD输入命令hive-servicemetastore。输入命令后会自动在MySQL的hive数据库下创建许多相关表。

10、启动Hive,即调出CMD输入命令hivecmd。

前面已经有篇文章介绍如何编译包含hive的spark-assembly.jar了,不清楚的可以翻看一下前面的文章。clouderamanager装好的spark,直接执行spark-shell进入命令行后,写入如下语句:valhiveContext=neworg.apache.spark.sql.hive.HiveContext(sc)你会发现没法执行通过,因为cm装的原生的spark是不支持sparkhql的,我们需要手动进行一些调整:第一步,将编译好的包含hive的JAR包上传到hdfs上配置的默认的spark的sharelib目录:/user/spark/share/lib第二步:在你要运行spark-shell脚本的节点上的/opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/spark/lib/目录下面,下载这个jar到这个目录:hadoopfs-gethdfs://n1:8020/user/spark/share/lib/spark-assembly-with-hive-maven.jar(具体路径替换成你自己的)。然后这个目录下面原来会有个软链接spark-assembly.jar指向的是spark-assembly-1.2.0-cdh5.3.0-hadoop2.5.0-cdh5.3.0.jar,我们把这个软链接删除掉重新创建一个同名的软链接:ln-sspark-assembly-with-hive-maven.jarspark-assembly.jar,指向我们刚下载下来的那个JAR包,这个JAR包会在启动spark-shell脚本时装载到driverprogram的classpath中去的,sparkContext也是在driver中创建出来的,所以需要将我们编译的JAR包替换掉原来的spark-assembly.jar包,这样在启动spark-shell的时候,包含hive的spark-assembly就被装载到classpath中去了。第三步:在/opt/cloudera/parcels/CDH/lib/spark/conf/目录下面创建一个hive-site.xml。/opt/cloudera/parcels/CDH/lib/spark/conf目录是默认的spark的配置目录,当然你可以修改默认配置目录的位置。hive-site.xml内容如下:hive.metastore.localfalsehive.metastore.uristhrift://n1:9083hive.metastore.client.socket.timeout300hive.metastore.warehouse.dir/user/hive/warehouse这个应该大家都懂的,总要让spark找到hive的元数据在哪吧,于是就有了上面一些配置。第四步:修改/opt/cloudera/parcels/CDH/lib/spark/conf/spark-defaults.conf,添加一个属性:spark.yarn.jar=hdfs://n1:8020/user/spark/share/lib/spark-assembly-with-hive-maven.jar。这个是让每个executor下载到本地然后装载到自己的classpath下面去的,主要是用在yarn-cluster模式。local模式由于driver和executor是同一个进程所以没关系。以上完事之后,运行spark-shell,再输入:valhiveContext=neworg.apache.spark.sql.hive.HiveContext(sc)应该就没问题了。我们再执行一个语句验证一下是不是连接的我们指定的hive元数据库:hiveContext.sql("showtables").take(10)//取前十个表看看最后要重点说明一下这里的第二步第三步和第四步,如果是yarn-cluster模式的话,应该替换掉集群所有节点的spark-assembly.jar集群所有节点的sparkconf目录都需要添加hive-site.xml,每个节点spark-defaults.conf都需要添加spark.yarn.jar=hdfs://n1:8020/user/spark/share/lib/spark-assembly-with-hive-maven.jar。可以写个shell脚本来替换,不然手动一个一个节点去替换也是蛮累的。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6857703.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-29
下一篇 2023-03-29

发表评论

登录后才能评论

评论列表(0条)

保存