基于Hadoop不同版本搭建hive集群(附配置文件)

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

基于Hadoop不同版本搭建hive集群(附配置文件)

友人421   2020-05-29 我要评论

本教程采用了两种方案

一种是hive-1.21版本,hadoop版本为hadoop2.6.5

还有一种是主要讲基于hadoop3.x hive的搭建

 

先来第一种

一、本地方式(内嵌derby)

步骤

这种存储方式需要在本地运行一个mysql服务器,并作如下配置

 

解压

修改安装包内conf文件夹下的hive-default.xml.template,并重命名为hite-site.xml

<configuration> 
 
    <property> 
        <name>javax.jdo.option.ConnectionURL</name> 
        <value>jdbc:derby:;databaseName=metastore_db;create=true</value> 
    </property> 
    <property> 
        <name>javax.jdo.option.ConnectionDriverName</name> 
        <value>org.apache.derby.jdbc.EmbeddedDriver</value> 
    </property> 
    <property> 
        <name>hive.metastore.local</name> 
        <value>true</value> 
    </property> 
    <property> 
        <name>hive.metastore.warehouse.dir</name> 
        <value>/user/hive/warehouse</value> 
    </property> 
 
</configuration>

 

 

 将hive/lib目录下的jline jar包拷贝到hadoop的yarn lib下,并将原jar包删除或改名令其失效。否则会报版本不匹配的错误 问题

使用derby存储方式时,运行hive会在当前目录生成一个derby文件和一个metastore_db目录。这种存储方式的弊端是在同一个目录下同时只能有一个hive客户端能使用数据库,多个用户登录时会报错。(这是由于derby数据库的局限性造成的)

二、Local模式(mysql)

这种存储方式需要在本地运行一个mysql服务器,并作如下配置

 

步骤

安装一个mysql数据库

yum  install mysql-server -y

拷贝mysql驱动包到$HIVE_HOME\lib目录下

修改hive-site.xml

<configuration> 
 
<property> 
 
  <name>hive.metastore.warehouse.dir</name> 
 
  <value>/user/hive_remote/warehouse</value> 
 
</property> 
 
<property> 
 
  <name>hive.metastore.local</name> 
 
  <value>true</value> 
 
</property> 
​
 
<property> 
 
  <name>javax.jdo.option.ConnectionURL</name> 
 
  <value>jdbc:mysql://localhost/hive_meta?createDatabaseIfNotExist=true</value> 
 
</property> 
 
<property> 
 
  <name>javax.jdo.option.ConnectionDriverName</name> 
 
  <value>com.mysql.jdbc.Driver</value> 
 
</property> 
 
<property> 
 
  <name>javax.jdo.option.ConnectionUserName</name> 
 
  <value>hive</value> 
 
</property> 
 
​
​
<property> 
 
  <name>javax.jdo.option.ConnectionPassword</name> 
 
  <value>123</value> 
 
</property> 
 
</configuration>

 

启动sql服务
service mysqld start

设置开机启动

chkconfig mysqld on

修改root用户权限

(1)登录mysql       

mysql -uroot

(2)修改权限

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;

(3)刷新

flush privileges;

创建hive_meta数据库

create database hive_meta;

添加用户并修改权限

(1)创建hive用户和密码

CREATE USER 'hive'@'%' IDENTIFIED BY '123';

(2)赋予权限

 

grant all privileges on hive_meta.* to hive@"%" identified by '123';flush privileges;

删除多余权限

1.进入mysql数据库

 

use mysql;

2.查看用户

select host,user,password from user;

3. 删除多余会对权限造成影响的数据

delete from user where password = '';

 

将hive/lib目录下的jline jar包拷贝到hadoop的yarn lib下

配置HIVE_HOME,hive启动

 

三、远程(remote)模式

当有多个客户端使用hive时,若使用各自本地的hive和mysql,会导致各端元数据不一致,不易于管理,可能会出现各种问题。在一个基于本地mysql数据库的hive作为服务端,启动一个metastore服务,其他客户端通过thrift协议连接metastore使用服务端hive,从而使用同一份mysql内的元数据。

 

步骤

在一个搭建好基于mysql的hive的节点启动metastore服务作为服务端

hive --service metastore 

在客户端解压安装包并修改hive-site.xml

<configuration> 
 
<property> 
 
    <name>hive.metastore.warehouse.dir</name> 
 
    <value>/user/hive/warehouse</value> 
 
</property> 
       
<property> 
 
    <name>hive.metastore.local</name> 
 
    <value>false</value> 
 
</property> 
    
<property> 
 
    <name>hive.metastore.uris</name> 
 
    <value>thrift://192.168.23.134:9083</value> 
 
</property> 
 
</configuration>

 

注:metastore的启动会一直启动在前台,可利用如下方法解决

 

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

 

将日志打印到meta.log 错误日志(2)重定向到正常日志(1)

 

&表示后台执行

 

这种方式服务端只提供元数据,客户端运行自己的hiv

 


 

再来第二种

本篇主要描述hive3.x与历史版本搭建的不同之处。本地模式用的较少就不复赘述,直接从local模式开始,远程模式与历史版本无异,本篇也不再赘述。

 

一、local模式

1.修改hive-site.xml

<configuration>  
  <property>  
    <name>hive.metastore.warehouse.dir</name>  
    <value>/user/hive_remote/warehouse</value>  
  </property>  
  <property>
    <name>hive.exec.scratchdir</name>
    <value>/tmp/hive</value>
    <description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/&lt;username&gt; is created, with ${hive.scratch.dir.permission}.<https://img.qb5200.com/download-x/description>
  </property>
  <property>
    <name>hive.exec.local.scratchdir</name>
    <value>/opt/software/hive/temp/root</value>
  </property>
  <property>
    <name>hive.downloaded.resources.dir</name>
    <value>/opt/software/hive/temp/${hive.session.id}_resources</value>
  </property>
  <property>
    <name>hive.server2.logging.operation.log.location</name>
    <value>/opt/software/hive/temp/root/operation_logs</value>
  </property>
 
  <property>
    <name>hive.querylog.location</name>
    <value>/opt/software/hive/temp/root</value>
  </property>
  <property>  
    <name>hive.metastore.local</name>  
    <value>true</value>  
  </property>  
     
  <property>  
    <name>javax.jdo.option.ConnectionURL</name>  
    <value>jdbc:mysql://localhost/hive_meta?createDatabaseIfNotExist=true</value>  
  </property>  
     
  <property>  
    <name>javax.jdo.option.ConnectionDriverName</name>  
    <value>com.mysql.jdbc.Driver</value>  
  </property>  
     
  <property>  
    <name>javax.jdo.option.ConnectionUserName</name>  
    <value>hive</value>  
  </property>  
     
  <property>  
    <name>javax.jdo.option.ConnectionPassword</name>  
    <value>123</value>  
  </property>  
</configuration>

 

2.修改hive-env.sh

​export HADOOP_HOME=/opt/software/hadoop
export HIVE_CONF_DIR=/opt/software/hive/conf
export HIVE_AUX_JARS_PATH=/opt/software/hive/lib

 

3.将hadoop/share/hadoop/common/lib 下的 guava-xx.jar 复制到hive/lib 下 将hive 的guava-xx.jar删除

 

4.大功告成了,赶快试试吧!

 

文章首发公众号:Java架构师联盟,每日更新技术好文

 

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们