Hive介绍与客户端环境搭建

Hive admin 2年前 (2018-11-09) 403次浏览 0个评论 扫描二维码

一、产生背景

1)MapReduce编程不方便:开发、测试、需求变更
2)满足传统关系型数据库人员的需要
3)像使用sql一样的方式来处理分析大数据
==> Hive
文件存放在HDFS之上的,那么如果你想使用SQL去处理它,需要一个什么前提?
结构化、文件映射成表格 ==> Schema 元数据信息(metastore)

二、Hive是什么

1、官网:hive.apache.org

The Apache Hive ™ data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage using SQL.Structure can be projected onto data already in storage. A command line tool and JDBC driver are provided to connect users to Hive.
数据仓库软件,使用SQL来读、写和管理大量分布式存储的数据集。结构能被映射到已经存储的数据上。

常见的分布式存储:HDFS、S3、OSS
hdfs://xxxxx
s3://xxxxx

2、Hive由来以及应用场景

由Facebook开源:解决海量结构化日志的数据 pv uv
构建在Hadoop之上的数据仓库
Hive定义了SQL语言:HQL (类SQL)
通用于离线处理,常用的HIVE引擎

SQL =====Hive=====MapReduce/Spark/Tez===>YARN
Hive on MapReduce
Hive on Spark
Hive on Tez

3、Hive发展历程

08/07 Facebook
05/13 0.11  Stinger Phase 1 ORC HiveServer2
10/13 0.12  Stinger Phase 2 ORC improvement
04/14 0.13  Stinger Phase 3 Tez and Vectorized query engine
11/14 0.14  Stinger.next Phase 1: Cost-based optimizer  CBO

4、为什么要使用Hive

1) SQL

2) Hadoop

3) MetaStore: Pig/Impala/Presto/SparkSQL共享元数据信息

5、部署架构

1)基础存储Hadoop分布式 集群
2)Hive 客户端

MySQL主备,当主MySQL挂掉后,方便启动备用MySQL提供服务

6、Hive与RDBMS的区别

可以查看以下文章
https://www.codeobj.com/?p=473

三、hive部署

1、下载

下载:http://archive.cloudera.com/cdh5/cdh/5/
在使用CDH版本的时候一定要注意:尾巴对准了
wget http://archive.cloudera.com/cdh5/cdh/5/hive-1.1.0-cdh5.7.0.tar.gz

2、解压和配置环境变量

解压:tar -zxvf hive-1.1.0-cdh5.7.0.tar.gz -C ~/app/
配置环境变量:

vim ~/.bash_profile
export HIVE_HOME=/home/hadoop/app/hive-1.1.0-cdh5.7.0
export PATH=$HIVE_HOME/bin:$PATH

生效: source ~/.bash_profile

3、Hive配置

1)hive-env.sh配置:

cd $HIVE_HOME/conf
vim hive-env.sh

HADOOP_HOME=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0
HIVE_CONF_DIR=/home/hadoop/app/hive-1.1.0-cdh5.7.0/conf

2)修改hive-log4j.properties:

修改hive的log存放日志到/home/hadoop/app/hive-1.1.0-cdh5.7.0/logs
cp hive-log4j.properties.template hive-log4j.properties

找到hive.log.dir=${java.io.tmpdir}/${user.name}
改成hive.log.dir=/home/hadoop/app/hive-1.1.0-cdh5.7.0/logs

3)hive-site.xml配置的就是MySQL的相关信息

拷贝mysql驱动到$HIVE_HOME/lib

[hadoop@hadoop000 software]$ cp ~/software/mysql-connector-java-5.1.27.jar $HIVE_HOME/lib
<configuration>

        <!--Hive作业的HDFS根目录位置 --> 
        <property>
            <name>hive.exec.scratchdir</name>
            <value>/user/hive/tmp</value>
        </property>

        <!--Hive作业的HDFS根目录创建写权限 --> 
        <property>
            <name>hive.scratch.dir.permission</name>
            <value>733</value>
        </property>

        <!--hdfs上hive元数据存放位置 --> 
        <property>  
          <name>hive.metastore.warehouse.dir</name>  
          <value>/user/hive/warehouse</value>   
        </property>

        <property>  
            <name>javax.jdo.option.ConnectionURL</name>
                <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8</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>hive</value>
        </property>
        <!--客户端显示当前查询表的头信息 --> 
        <property>
                <name>hive.cli.print.header</name>
                <value>true</value>
        </property>

    <!--客户端显示当前数据库名称信息 --> 
        <property>
          <name>hive.cli.print.current.db</name>
          <value>true</value>
        </property> 
</configuration>

4)mysql创建hive用户密码

mysql> CREATE DATABASE hive; 
mysql> USE hive; 
mysql> CREATE USER 'hive'@'localhost' IDENTIFIED BY 'hive';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
密码设置的太简单,如果是测试环境下,可以对密码的安全度进行调整
set global validate_password_policy=0; 设置密码强度检查等级
set global validate_password_length=4; 设置密码最低强度

mysql> GRANT ALL ON hive.* TO 'hive'@'localhost' IDENTIFIED BY 'hive'; 
mysql> GRANT ALL ON hive.* TO 'hive'@'%' IDENTIFIED BY 'hive'; 
mysql> FLUSH PRIVILEGES; 
mysql> quit;

四、运行Hive

1、启动metastor

 hive --service metastore &

查看metastor进程

ps -ef| grep 'metastore'
  502  4526   687   0  2:29下午 ttys000    0:11.56 /Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/bin/java -Xmx256m -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/Users/wn/app/hadoop-2.6.0-cdh5.7.0/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/Users/wn/app/hadoop-2.6.0-cdh5.7.0 -Dhadoop.id.str=wn -Dhadoop.root.logger=INFO,console -Djava.library.path=/Users/wn/app/hadoop-2.6.0-cdh5.7.0/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Xmx512m -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.util.RunJar /Users/wn/app/hive-1.1.0-cdh5.12.2/lib/hive-service-1.1.0-cdh5.12.2.jar org.apache.hadoop.hive.metastore.HiveMetaStore
  502  4567   687   0  2:29下午 ttys000    0:00.01 grep metastore

2、hive

hadoop000:conf wn$ hive
ls: /Users/wn/app/spark-2.3.0-bin-hadoop2.6/lib/spark-assembly-*.jar: No such file or directory
19/03/01 14:30:11 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

Logging initialized using configuration in file:/Users/wn/app/hive-1.1.0-cdh5.12.2/conf/hive-log4j.properties
WARNING: Hive CLI is deprecated and migration to Beeline is recommended.
hive (default)> show databases;
OK
default
Time taken: 4.497 seconds, Fetched: 1 row(s)

mysql中hive库的表


codeobj , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Hive介绍与客户端环境搭建
喜欢 (0)
[a37free@163.com]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址