Hive三种模式的简单介绍及具体搭建流程

理论基础

hive有三种运行模式:
    内嵌模式、本地模式、远程模式。


内嵌模式:
    元数据保村在内嵌的derby中,允许一个会话链接,尝试多个会话链接时会报错。

本地模式:
    本地安装mysql 替代derby存储元数据。
    由于元数据的获取需要访问mysql,所以这就要求每一个用户必须要有对MySQL的访问权利。

远程模式:
    以本地模式为基础。
    这种模式需要使用 HIVE_HOME/bin 目录下提供的 beeline+hiveserver2 配合使用才可以。
    mysql数据库所在的节点提供metastore service服务,其他节点可以连接该服务来获取元数据信息。
    各种客户端通过 beeline 来连接,连接之前无需知道数据库的用户名和密码。
    

    

一、前 期准备

安装好hadoop并启动。

hadoop搭建:

Hadoop伪分布搭建               

Hadoop全分布搭建

Zookeeper搭建及Zookeeper实现Hadoop的HA

搭建远程模式的时候,使用全分布[HA]的方式。其他情况随意。

二、搭建内嵌模式

1、tar /opt/source/apache-hive-2.3.4-bin.tar.gz -C ../apps

2、mv apache-hive-2.3.4-bin/ hive-2.3.4

3、vi + /etc/profile
    export HIVE_HOME=/opt/apps/hive-2.3.4
    export PATH=$PATH:$HIVE_HOME/bin 

4、cd /opt/apps/hive-2.3.4/conf 

5、cp hive-env.sh.template hive-env.sh && vi hive-env.sh
    HADOOP_HOME=/opt/apps/hadoop-2.6.5

6、cp hive-default.xml.template hive-site.xml && vi hive-site.xml
    删除configuration内部所有内容

<!--Hive中所有数据存储在HDFS上的路径-->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>
<!--连接本地Derby的Url-->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:derby:;databaseName=metastore_db;create=true</value>
    </property>
<!--连接Derby的驱动包-->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>org.apache.derby.jdbc.EmbeddedDriver</value>
    </property>
<!--元数据库是否存放在本地,true代表存放在本地-->
    <property>  
        <name>hive.metastore.local</name>
        <value>true</value>
    </property>

    

6、初始化元信息(每次启动hive都需要执行这一步)
    cd /opt/apps/hive-2.3.4/bin && ./schematool -dbType derby -initSchema
    如果失败的话:
         mv metastore_db/ metastore_db.tmp/ 或者 rm -rf metastore_db/
    再重新初始化。

7、验证是否搭建成功
    先执行hive    
    hive> create table a(id int);
    OK
    Time taken: 1.436 seconds
    hive> select count(*) from a;
    OK
    0
    
    如果建表能建,且查询没问题,则搭建成功。

    
        
    

三、搭建本地模式 

搭建mysql

1、yum -y install mysql

2、chkconfig mysqld on && service mysqld start

3、mysql

4、use mysql;

5、grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

6、delete from user where host<>'%';    #####删除多余的会对权限造成影响的数据

7、flush privileges;
    或者重启mysql服务。

-------------------------------------------------------------------
-------------------------------------------------------------------

搭建hive

1、tar /opt/source/apache-hive-2.3.4-bin.tar.gz -C ../apps

2、mv apache-hive-2.3.4-bin/ hive-2.3.4

3、vi + /etc/profile
    export HIVE_HOME=/opt/apps/hive-2.3.4
    export PATH=$PATH:$HIVE_HOME/bin 

4、cd /opt/apps/hive-2.3.4/conf 

5、cp hive-env.sh.template hive-env.sh && vi hive-env.sh
    HADOOP_HOME=/opt/apps/hadoop-2.6.5

6、cp hive-default.xml.template hive-site.xml && vi hive-site.xml
    删除configuration内部所有内容
<!-- Hive文件HDFS存放路径 -->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive_remote/warehouse</value>??
    </property>
<!-- hive和mysql是否在同一个节点 --> 
    <property>
        <name>hive.metastore.local</name>
        <value>true</value>
</property>
<!--mysql的数据库url-->
    <property>
        <name>javax.jdo.option.ConnectionURL</name> 
        <value>jdbc:mysql://Linux005:3306/hive_remote?createDatabaseIfNotExist=true</value>
    </property>
<!--连接mysql的驱动包-->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
<!--hive存放元数据的数据库的用户名-->
    <property> 
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>

<!--hive存放元数据的数据库的密码-->
    <property>  
        <name>javax.jdo.option.ConnectionPassword</name>  
    <value>123456</value> 
    </property>


7、将mysql连接驱动包“   mysql-connector-java-5.1.32-bin.jar  ”放到hive家目录的lib文件夹下

8、初始化元信息
    cd /opt/apps/hive-2.3.4/bin && ./schematool -dbType mysql -initSchema
    如果失败的话:
         mv metastore_db/ metastore_db.tmp/ 或者 rm -rf metastore_db/
    再重新初始化。

9、验证是否搭建成功
    先执行hive    
    hive> create table a(id int);
    OK
    Time taken: 1.436 seconds
    hive> select count(*) from a;
    OK
    0
    
    如果建表能建,且查询没问题,则搭建成功。

四、远程模式的搭建

规划:

Linux001 :MySQL服务器

Linux002:metastore服务器

Linux003:Hive客户端

Linux004:Hive服务端

1、Linux001搭建MySQL步骤

搭建mysql

1、yum -y install mysql

2、chkconfig mysqld on && service mysqld start

3、mysql

4、use mysql;

5、grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

6、delete from user where host<>'%';    #####删除多余的会对权限造成影响的数据

7、flush privileges;
    或者重启mysql服务。

2、Linux004搭建Hive服务端

1、tar /opt/source/apache-hive-2.3.4-bin.tar.gz -C ../apps

2、mv apache-hive-2.3.4-bin/ hive-2.3.4

3、vi + /etc/profile
    export HIVE_HOME=/opt/apps/hive-2.3.4
    export PATH=$PATH:$HIVE_HOME/bin 

4、cd /opt/apps/hive-2.3.4/conf 

5、cp hive-env.sh.template hive-env.sh && vi hive-env.sh
    HADOOP_HOME=/opt/apps/hadoop-2.6.5

6、cp hive-default.xml.template hive-site.xml && vi hive-site.xml
    删除configuration内部所有内容
<!-- Hive文件HDFS存放路径 -->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>??
    </property>
<!-- hive和mysql是否在同一个节点 --> 
    <property>
        <name>hive.metastore.local</name>
        <value>false</value>
</property>
<!--mysql的数据库url-->
    <property>
        <name>javax.jdo.option.ConnectionURL</name> 
        <value>jdbc:mysql://Linux001:3306/hive?createDatabaseIfNotExist=true</value>
    </property>
<!--连接mysql的驱动包-->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
<!--hive存放元数据的数据库的用户名-->
    <property> 
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>

<!--hive存放元数据的数据库的密码-->
    <property>  
        <name>javax.jdo.option.ConnectionPassword</name>  
    <value>123456</value> 
    </property>


7、将mysql连接驱动包“   mysql-connector-java-5.1.32-bin.jar  ”放到hive家目录的lib文件夹下


8、初始化元信息
    cd /opt/apps/hive-2.3.4/bin && ./schematool -dbType mysql -initSchema
    如果失败的话:
         mv metastore_db/ metastore_db.tmp/ 或者 rm -rf metastore_db/
    再重新初始化。

9、验证是否搭建成功
    先执行hive    
    hive> create table a(id int);
    OK
    Time taken: 1.436 seconds
    hive> select count(*) from a;
    OK
    0
    
    如果建表能建,且查询没问题,则搭建成功。



2、Linux002搭建metastore服务器

1、执行“Linux004搭建hive服务端”的前7步。

2、启动metastore服务器
    hive --service metastore 
    注意:该命令会阻塞
    

3、Linux003搭建Hive客户端

1、执行“Linux004搭建hive服务端”的前5步。

2、cp hive-default.xml.template hive-site.xml && vi hive-site.xml
    删除configuration内部所有内容
<!-- Hive文件HDFS存放路径 -->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>??
    </property>
<!-- hive和mysql是否在同一个节点 --> 
    <property>
        <name>hive.metastore.local</name>
        <value>false</value>
</property>
<!--metastore服务器的url-->
    <property>
        <name>hive.metastore.uris</name> 
        <value>thrift://Linux002:9083</value>
    </property>

3、执行“Linux004搭建hive服务端”的第7步。

在这台机子上启动Hive前需要先启动Linux003上的metastore。

猜你喜欢

转载自blog.csdn.net/pengzonglu7292/article/details/89501198
今日推荐