Hive是什么?

由Facebook开源用于解决海量 结构化日志的数据统计; Hive是基于Hadoop的一个 数据仓库工具,可以将结构化的数据文件映射 成一张表,并提供类SQL查询功能;

构建在Hadoop 之上的数据仓库; 1. 使用HQL作为查询接口; 2. 使用HDFS存储; 3. 使用MapReduce计算;

本质是:将HQL转化成MapReduce 程序 灵活性和扩展性比较好:支持UDF,自定义存储格式等; 适合离线数据处理;

Hive架构

用户接口: Client

CLI(hive shell)、JDBC/ODBC(java访问hive),WEBUI(浏览器访问hive)

元数据: Metastore

元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/ 分区字段、表的类型(是否是外部表)、表的数据所在目录等; 默认存储在自带的derby数据库中,推荐使用采用MySQL存储Metastore;

Hadoop

使用HDFS进行存储,使用MapReduce进行计算;

驱动器: Driver

包含:解析器、编译器、优化器、执行器;

  1. 解析器:将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工 具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否 存在、SQL语义是否有误(比如select中被判定为聚合的字段在group by中是否有出现);
  2. 编译器:将AST编译生成逻辑执行计划;
  3. 优化器:对逻辑执行计划进行优化;
  4. 执行器:把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是MR/TEZ/Spark;

Hive的有点及使用场景

  1. 操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手);
  2. 避免了去写MapReduce,减少开发人员的学习成本;
  3. 统一的元数据管理,可与impala/spark等共享元数据;
  4. 易扩展(HDFS+MapReduce:可以扩展集群规模;支持自定义函数);
  5. 数据的离线处理;比如:日志分析,海量结构化数据离线分析…
  6. Hive的执行延迟比较高,因此hive常用于数据分析的,对实时性要求 不高的场合;
  7. Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执 行延迟比较高。

下载

  • wget http://mirrors.hust.edu.cn/apache/hive/hive-2.3.2/apache-hive-2.3.2-bin.tar.gz

  • 解压到指定目录 tar -zxvf ..

配置环境变量

如果是对所有的用户都生效就修改vi /etc/profile 文件, 如果只针对当前用户生效就修改 vi ~/.bahsrc 文件。

vim /etc/profile

export HIVE_HOME=/home/hadoop/hive-2.3.0/

export PATH=$PATH:$HIVE_HOME/bin

使环境变量生效,运行 source /etc/profile使/etc/profile文件生效

Hive 配置 Hadoop HDFS

复制 hive-site.xml

cd /home/hadoop/hive-2.3.0/conf
cp hive-default.xml.template hive-site.xml

新建 hdfs 目录

使用 hadoop 新建 hdfs 目录,因为在 hive-site.xml 中有默认如下配置:

<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>

进入 hadoop 安装目录 执行hadoop命令新建/user/hive/warehouse目录,并授权,用于存储文件

cd /home/hadoop/hadoop-2.7.4

bin/hadoop fs -mkdir -p /user/hive/warehouse
bin/hadoop fs -mkdir -p /user/hive/tmp
bin/hadoop fs -mkdir -p /user/hive/log
bin/hadoop fs -chmod -R 777 /user/hive/warehouse
bin/hadoop fs -chmod -R 777 /user/hive/tmp
bin/hadoop fs -chmod -R 777 /user/hive/log

用以下命令检查目录是否创建成功

bin/hadoop fs -ls /user/hive

修改 hive-site.xml

搜索hive.exec.scratchdir,将该name对应的value修改为/user/hive/tmp

<property>
<name>hive.exec.scratchdir</name>
<value>/user/hive/tmp</value>
</property>

搜索hive.querylog.location,将该name对应的value修改为/user/hive/log/hadoop

<property>
<name>hive.querylog.location</name>
<value>/user/hive/log/hadoop</value>
<description>Location of Hive run time structured log file</description>
</property>

搜索javax.jdo.option.connectionURL,将该name对应的value修改为MySQL的地址

<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://host:port/hive?createDatabaseIfNotExist=true</value>
<description>
JDBC connect string for a JDBC metastore.
To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
</description>
</property>

搜索javax.jdo.option.ConnectionDriverName,将该name对应的value修改为MySQL驱动类路径

<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>

搜索javax.jdo.option.ConnectionUserName,将对应的value修改为MySQL数据库登录名

<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive1</value>
<description>Username to use against metastore database</description>
</property>

搜索javax.jdo.option.ConnectionPassword,将对应的value修改为MySQL数据库的登录密码

<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>mima</value>
<description>password to use against metastore database</description>
</property>

创建 tmp 文件

mkdir /home/hadoop/hive-2.3.0/tmp

并在 hive-site.xml 中修改

把{system:java.io.tmpdir} 改成 /home/hadoop/hive-2.3.0/tmp

把 {system:user.name} 改成 {user.name}

新建 hive-env.sh

cp hive-env.sh.template hive-env.sh

vi hive-env.sh

HADOOP_HOME=/home/hadoop/hadoop-2.7.4/
export HIVE_CONF_DIR=/home/hadoop/hive-2.3.0/conf
export HIVE_AUX_JARS_PATH=/home/hadoop/hive-2.3.0/lib

下载 mysql 驱动包

cd /home/hadoop/hive-2.3.0/lib

wget http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar

初始化 mysql

MySQL数据库进行初始化 首先确保 mysql 中已经创建 hive 库

cd /home/hadoop/hive-2.3.0/bin
./schematool -initSchema -dbType mysql

如果看到如下,表示初始化成功

Starting metastore schema initialization to 2.3.0
Initialization script hive-schema-2.3.0.mysql.sql
Initialization script completed
schemaTool completed

如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行)

mysql -uroot -p
#(执行下面的语句 *.*:所有库下的所有表 %:任何IP地址或主机都可以连接)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
FLUSH PRIVILEGES;

启动hive

cd bin
./hive

问题

hive Call From node1/ip to node1:9000 failed on connection exception: java.net.ConnectException: Connection refused

  • 以上问题一般就是hadoop没有启动

https://segmentfault.com/a/1190000011303459

ubuntu16.04下hive安装与配置的更多相关文章

  1. ubuntu16.04下zabbix安装和配置

    介绍 Zabbix是用于网络和应用的开源监控软件. 它提供从服务器,虚拟机和任何其他类型的网络设备收集的数千个度量的实时监控. 这些指标可以帮助您确定IT基础架构的当前运行状况,并在客户投诉之前检测硬 ...

  2. Ubuntu16.04下编译安装OpenCV3.4.0(C++ & python)

    Ubuntu16.04下编译安装OpenCV3.4.0(C++ & python) 前提是已经安装了python2,python3 1)安装各种依赖库 sudo apt-get update ...

  3. Ubuntu16.04 下如何安装搜狗拼音输入法【亲测有效】

    Ubuntu16.04 下如何安装搜狗拼音输入法[亲测有效]   一.添加fcitx键盘输入法系统[系统默认是iBus] 1.将下载源添加至系统源: sudo add-apt-repository p ...

  4. ubuntu16.04下docker安装和简单使用(转)

    ubuntu16.04下docker安装和简单使用   转自:https://www.cnblogs.com/hupeng1234/p/9773770.html 前提条件 操作系统 docker-ce ...

  5. Ubuntu16.04下编译安装及运行单目ORBSLAM2

    官网有源代码和配置教程,地址是 https://github.com/raulmur/ORB_SLAM2 1 安装必要工具 首先,有两个工具是需要提前安装的.即cmake和Git. sudo apt- ...

  6. Ubuntu16.04下Hive的安装与配置

    一.系统环境 os : Ubuntu 16.04 LTS 64bit jdk : 1.8.0_161 hadoop : 2.6.4mysql : 5.7.21 hive : 2.1.0 在配置hive ...

  7. acm的ubuntu (ubuntu16.04 安装指南,chrome安装,vim配置,git设置和github,装QQ)

    日常手贱把ubuntu14.04更新到了16.04,然后就game over了.mdzz,不然泥萌也看不到这篇博客了=.= 然后花了些时间重装了一个16.04版的,原来那个14.04的用可以用,就是动 ...

  8. ubuntu16.04下编译安装vim8.1

    之前写过一篇centos7下编译安装vim8.0的教程,ubuntu16.04相比centos7下安装过程不同在于依赖包名字的不同,其余都是一样.下面给出ubuntu16.04编译安装vim8.0需要 ...

  9. ubuntu16.04下g++安装及使用

    1)首先在虚拟机中安装Ubuntu16.04,网络模式设置为NAT模式,安装完成后在虚拟机中测试是否能够上网. 2)进入Ubuntu,按Ctrl+alt+T,调出终端,输入sudo su,输入密码切换 ...

随机推荐

  1. github 丢失的本地提交

    open git bash git reflog git reset xxxxxxx

  2. jstl <fmt:formatDate>标签

    <fmt:formatDate>标记用于在各种不同的方式来格式化日期 属性: <fmt:formatDate>标签具有以下属性: 属性 描述 必需 默认值 value 要显示的 ...

  3. domino数据同步到sql server

          近期有个需求,要同步domino数据到selservlet数据库,查看几年前ls使用odbc写的同步功能,还能正常使用.而且加入读者域进去功能(之前没有这个需求).改进成网页配置版本号(曾 ...

  4. C#.NET为List加入扩展方法:获取唯一值

    public static class ListTools { /// <summary> /// 获取唯一值列表 /// </summary> /// <param n ...

  5. C++基础学习教程(一)

    開始自己的C++复习进阶之路. 声明: 这次写的博文纯当是一个回想复习的教程.一些非常基础的知识将不再出现.或者一掠而过,这次的主要风格就是演示样例代码非常多~~~ 全部代码在Ubuntu 14.04 ...

  6. 虚拟机只有IPv6,没有ipv4

    1.修改配置文件 vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none HWADDR=00:0C:29:20: ...

  7. lodash 展平数组 flatten flattenDeep

    _.flatten(array) 向上一级展平数组嵌套 <!DOCTYPE html> <html lang="zh"> <head> < ...

  8. 关于XSuperMES项目使用的PDF框架

    我在曾经的项目中使用的是pdfbox.在读取中文文档时能够读出大部分的文字,可是在数字.分页等地方还是不可避免的出现乱码. 于是我在网上搜索,看有没有什么解决方法.看到有说法: "PDFBo ...

  9. html5 的a标签是可以拨电话的,通过其Href属性来实现

    <a href="tel:18700000000">点击给我打电话吧!</a> 注: 1.<a href="tel:18750000000& ...

  10. Android---06---2中动画效果

    1,先看FrameAnimation,此动画是用来实现动态动画就是把一帧帧图片迭代起来 放在drowable中的xml: <?xml version="1.0" encodi ...