Hive 中 metastore(元数据存储)的三种方式:
        a)内嵌 Derby 方式
        b)Local 方式 
        c)Remote 方式 
 

第一种方式:本地 mysql

注: 这种存储方式需要在本地运行一个 mysql 服务器,并作如下配置,使用 mysql 的方 式,需要将 mysql 的 jar 包拷贝到$HIVE_HOME/lib 目录下
 

1.  安装mysql, 修改权限

yum  install  mysqld-server
chkconfig  mysqld  on  设置开机启动
service  mysqld  start  启动mysql
 
进入mysql
mysql
use  mysql;
show  tables;
desc;
select  host,  user,  password  from   user;
 
修改mysql权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION; 
delete  from  user;
flush  privileges;  刷新权限
 
quit
mysql
mysql  -u  root  -p
此时需要输入密码,进入mysql, 如果能够进入,则mysql修改成功
 

2. 同一台主机上安装 hive

上传hive压缩包,并解压到home目录下
tar  zxvf  apache-hive-1.2.1-bin.tar.gz  -C  /home
 
配置hive环境变量
vi  /etc/profile  
 

source  /etc/profile
 
修改hive的配置文件

 

vi  hive-site.xml

 

hive   
发现报如下错误,只需要拷贝mysql的jar包到hive的lib下即可

 

hive中的高版本替换hadoop中的低版本
hive中的高版本
 

hadoop中的jline为低版本-->替换为高版本

进入hive中的lib目录,进行copy到hadoop中的lib下
cp    jline-2.12.jar     /root/hadoop-2.5.1/share/hadoop/yarn/lib
 
然后   hive   就成功进入了!!!

测试hive

 

注:使用 derby 存储方式时,运行 hive会在当前目录生成一个 derby 文件和一个metastore_db 目录。这种存储方式的弊端是在同一个目录下同时只能有一个 hive 客户端能使用数据库, 否则会提示如下错误 [html] view plaincopyprint? hive> show tables;   FAILED: Error in metadata: javax.jdo.JDOFatalDataStoreException: Failed to start database 'metast ore_db', see the next exception for details.   NestedThrowables:   java.sql.SQLException: Failed to start database 'metastore_db', see the next exception for details.   FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask   hive> show tables; FAILED: Error in metadata: javax.jdo.JDOFatalDataStoreException: Failed to start database 'metastore_db', see the next exception for details. NestedThrowables: java.sql.SQLException: Failed to start database 'metastore_db', see the next exception for details. FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask 
 

第二种方式:远端mysql--remote分开       亲测安装

假定node1为客户端,node2为服务端
node1和node2上传hive压缩包,并解压到home路径下,配置hive环境变量
 
服务端node2:服务端需要mysql jar包
拷贝mysql-connecor-java.jar到hive的lib下

cd  conf
mv  hive-default.template.xml  hive-site.xml
vi  hive-site.xml

 

<configuration>

<property>
<name>hive.metastore.warehouse.dir</name>
<value>/opt/hive/warehouse</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.1.33: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>root</value>
<description>username to use against metastore database</description>
</property> <property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>password to use against metastore database</description>
</property>
</configuration>

  

客户端node1:
首先替换hadoop中jline的版本为hive中的高版本,步骤参考第一种方式
cd  conf  
mv  hive-default.template.xml  hive-site.xml
vi  hive-site.xml

 

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

  

客户端服务端修改hive-env.sh配置其中的$hadoop_home

测试hive:
node2:  
   hive  --service  metastore
node1:  
   hive
    create table tbl (id int, name string);
    insert into tbl values(1, 'zhangsan');
    select * from tbl;
 

第三种方式:本地derby

这种方式是最简单的存储方式,只需要在 hive-site.xml 做如下配置便可
 <?xml version="1.0"?>   
 <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>      
 <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>   
 
注:使用 derby 存储方式时,运行 hive会在当前目录生成一个 derby 文件和一个metastore_db 目录。这种存储方式的弊端是在同一个目录下同时只能有一个 hive 客户端能使用数据库, 否则会提示如下错误 [html] view plaincopyprint? hive> show tables;   FAILED: Error in metadata: javax.jdo.JDOFatalDataStoreException: Failed to start database 'metast ore_db', see the next exception for details.   NestedThrowables:   java.sql.SQLException: Failed to start database 'metastore_db', see the next exception for details.   FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask   hive> show tables; FAILED: Error in metadata: javax.jdo.JDOFatalDataStoreException: Failed to start database 'metastore_db', see the next exception for details. NestedThrowables: java.sql.SQLException: Failed to start database 'metastore_db', see the next exception for details. FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask 

hive三种方式区别和搭建的更多相关文章

  1. Hadoop Hive概念学习系列之hive三种方式区别和搭建、HiveServer2环境搭建、HWI环境搭建和beeline环境搭建(五)

     说在前面的话 以下三种情况,最好是在3台集群里做,比如,master.slave1.slave2的master和slave1都安装了hive,将master作为服务端,将slave1作为服务端. 以 ...

  2. vue路由传参的三种方式区别(params,query)

    最近在做一个项目涉及到列表到详情页的参数的传递,网上搜索一下路由传参,结合自己的写法找到一种适合自己的,不过也对三种写法都有了了解,在此记录一下 <ul class="table_in ...

  3. JS对url进行编码和解码(三种方式区别)

    Javascript语言用于编码的函数,一共有三个,最古老的一个就是escape().虽然这个函数现在已经不提倡使用了,但是由于历史原因,很多地方还在使用它,所以有必要先从它讲起. escape 和 ...

  4. java 复用类的三种方式区别 组合,继承,代理的区别

    1. 组合 : 只需在新类中产生现有类的对象 .(is - a 有一个) 新类是由现有类的对象组成. (引用初始化与作用域?) 2. 继承 : 按照现有类的类型来创造新类. (has - a 有一个) ...

  5. javascript函数命名的三种方式及区别

    1, function fn(val1,val2) { alert(val1+val2); } fn(1,2); 2, var fn=function() { alert(val1+val2); } ...

  6. React创建组件的三种方式及其区别

    内容转载于http://www.cnblogs.com/wonyun/p/5930333.html React推出后,出于不同的原因先后出现三种定义react组件的方式,殊途同归; 具体的三种方式: ...

  7. 301-React Ext-React创建组件的三种方式及其区别

    一.概述 React推出后,出于不同的原因先后出现三种定义react组件的方式,殊途同归:具体的三种方式: 函数式定义的无状态组件 es5原生方式React.createClass定义的组件 es6形 ...

  8. Hive三种不同的数据导出的方式

    转自:http://blog.chinaunix.net/uid-27177626-id-4653808.html Hive三种不同的数据导出的方式,根据导出的地方不一样,将这些方法分为三类:(1)导 ...

  9. php集成开发环境搭建三种方式

    三种方式都是一键搭建php开发环境 三种方式前提都是在linux下 wamp和phpstudy就不再用了 首先打造linux开发环境,通过vagrant+vbox实现本地文件同步到虚拟机上进行同步开发 ...

随机推荐

  1. Python 矩阵(线性代数)

    Python 矩阵(线性代数) 这里有一份新手友好的线性代数笔记,是和深度学习花书配套,还被Ian Goodfellow老师翻了牌. 笔记来自巴黎高等师范学院的博士生Hadrien Jean,是针对& ...

  2. PHP支付宝手机网站支付功能

    1.开通支付宝商家中心里面的手机网站支付 2.再去开放平台-开发者中心-创建移动支付的应用-获取到APPID 3.接着去文档中心下载DEMO 其实demo很简单.如果第一次看的话会存在看不懂的状态. ...

  3. luogu P5340 [TJOI2019]大中锋的游乐场

    传送门 要求经过路径汉堡的点和可乐的点个数之差绝对值\(\le k\),所以可以考虑dp,\(f_{i,j}\)表示到点\(i\),汉堡的点个数减可乐的点的个数为\(j\)的最短距离,注意一下负下标处 ...

  4. react 从商品详情页返回到商品列表页,列表自动滚动上次浏览的位置

    现状:目前从商品详情页返回到商品列表页,还需要再去请求服务数据,还需要用户再去等待获取数据的过程,这样用户体验非常不好, 遇到的问题: 1:如何将数据缓存, 2:如何获取和保存列表滑动的高度, 3:判 ...

  5. 华为设备acl配置

    拓扑图: 需求: 1.-vlan10内所有的主机,只能通过http访问vlan30-server的服务器;不能访问vlan40-server服务器2.-vlan20-pc1主机,可以访问vlan40- ...

  6. MySQL索引优化与分析(重要)

    建表SQL CREATE TABLE staffs ( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR (24) NULL DEFAULT '' COM ...

  7. 几个有关FPGA的概念

    <数字设计——原理和实践>(John F.Wakerly)的书 FPGA同步时钟设计 简单说就是 一个系统中(或系统中的一部分)都采用同一个时钟触发.系统中的(D)触发器全部都连接到一个时 ...

  8. docker配置Nginx

    创建及进入docker容器$docker run -p 80 --name web01 -i -t ubuntu /bin/bash 创建html文件夹$mkdir -p /var/www/html ...

  9. [apache spark]洞见纽约车辆事故|bluemix|apache spark

    今天,我们用spark 来分析 下一纽约市车辆事故的大数据. 前提条件: 1.有bluemix 帐号,并并在bluemix的dashboard里创建了一个sparck instance. 2.稳定可以 ...

  10. ZROI 19.07.28 组合计数/lb

    T1 题意:\(n\)个变量,\(0 \leq x_i \leq c_i\),求\(\sum x_i = A\)方案数.\(n \leq 32\). Sol: \(n \leq 10\)的时候容斥很水 ...