目录

  • 一、Hive简介
  • 二、 Hive环境安装
    • 1. 准备工作
      • 1)安装Hadoop
      • 2)安装MariaDB
        • (1)查看MariaDB安装情况
        • (2)卸载MariaDB/MySQL
        • (3)安装MariaDB
        • (4)简单配置MariaDB
        • (5)常见问题及解决
    • 2. Hive安装
      • 1) 下载Hive安装包
      • 2)安装Hive
      • 3)上传MySQL驱动
      • 4)修改配置文件
      • 5)元数据初始化
        • (1)数据库对账号授权
        • (2)初始化元数据
    • 3. 测试环境
      • 1)启动hdfs和yarn
      • 2)CLI命令窗口
      • 3)beeline客户端
        • (1)启动HS2服务
        • (2)启动beeline

一、Hive简介

Hive由 Facebook 开源用于解决海量结构化日志的数据统计工具。
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。

当然,SQL语句也可以转换成Tez或Spark。

为什么需要Hive?

  • 减低学习MapReduce的成本,使DBA、运维人员可以通过SQL来实现
  • 开源,可以节约成本
  • 可以处理大数据

Hive架构体系

  • Driver组件

    • 解析器(SQL Parser):将 SQL 字符串转换成抽象语法树 AST,这一步一般都用第三方工具库完成,比如 antlr;对 AST 进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误。

    • 编译器(Physical Plan):将 AST 编译生成逻辑执行计划。

    • 优化器(Query Optimizer):对逻辑执行计划进行优化。

    • 执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于 Hive 来

      说,就是 MR/Spark/Tez。

  • MetaStore组件

    • MetaStore组件存储着hive的元数据信息,将自己的元数据存储到了关系型数据库当中,支持的数据库主要有:Mysql、Derby, 支持把metastore独立出来放在远程的集群上面,使得hive更加健壮。
    • 元数据主要包括了表的名称、表所属的数据库(默认是 default)、表的拥有者、表的列、分区及其属性、表的属性(是不是外部表等等)、表的数据所在的目录等
  • 用户接口

    • CLI,即Command Line Interface,即命令交互工具。这样,我们就可以通过命令来与操作Hive。
    • HiveServer2,当启动了这个服务之后,我们就可以通过开发程序来操作Hive。比如通过Java程序,调用Hive JDBC Driver来对数据库增删改查,这个就像平常操作关系数据库一样方便。
    • Hive Web Interface,这个是一个Web版本的操作界面。但它在新版本中已经废弃。可用HUE来代替。

二、 Hive环境安装

Hive的三种部署模式,主要按Metastore 的运行模式进行区分。

本文主要以Local模式进行演示,关系数据库将选用Mysql的一个分支版MariaDB。

1. 准备工作

1)安装Hadoop

本文以Hadoop2.7.7为例,可以参考教程:https://blog.csdn.net/tangyi2008/article/details/121908766

安装好Hadoop后,需要添加用户的代理配置:

vi $HADOOP_HOME/etc/hadoop/core-site.xml

添加如下配置项

<property><name>hadoop.proxyuser.xiaobai.hosts</name><value>*</value>
</property>
<property><name>hadoop.proxyuser.xiaobai.groups</name><value>*</value>
</property>

注意,配置项中的xiaobai为ubuntu系统的用户名,如果不是该用户名,改为对应的配置项,比如你的用户名为zhangsan, 则选项为hadoop.proxyuser.zhangsan.hostshadoop.proxyuser.zhangsan.groups

2)安装MariaDB

MariaDB数据库是MySQL的一个分支,由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发。开发该分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。

MariaDB名称来自Michael Widenius的女儿Maria的名字。

(1)查看MariaDB安装情况

使用如下命令查看MariaDB的安装情况

sudo dpkg -l | grep maria

如果没有打印任何内容,说明没有安装,否则,可根据需要决定是否需要卸载后重新安装

(2)卸载MariaDB/MySQL

如果你想卸载掉以前安装的mariadb或者mysql,可以使用如下命令

sudo apt autoremove mysql-*

如果确定安装的是maria,可以使用如下命令卸载

sudo apt autoremove mariadb-*

(3)安装MariaDB

可以使用如下命令进行便捷的安装,它会在你默认的源中安装

sudo apt update
sudo apt install mariadb-server

注意:可以在https://downloads.mariadb.org/mariadb/repositories/中去设定自己的操作系统及版本、需要安装的 MariaDB 版本、符合自己国家区域的仓库,以便更快速准确的安装所需要的版本。

当设置好操作系统(18.04LTS)、MariaDB版本(10.6)和仓库(Alibaba Cloud)时,网页上会给出添加仓库的命令和安装的命令

添加Repository的命令

sudo apt-get install software-properties-common dirmngr apt-transport-https
sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] https://mirrors.aliyun.com/mariadb/repo/10.6/ubuntu bionic main'

更新源并安装MariaDB的命令

sudo apt update
sudo apt install mariadb-server

完成安装,使用下面的命令检查MariaDB服务状态

sudo systemctl status mariadb

当看到如下界面,恭喜你,安装成功!!!

(4)简单配置MariaDB

使用如下命令进行基本的配置:

sudo mysql_secure_installation

执行命令后,终端会有如下问题需要设定:

1.Enter current password for root (enter for none):
(预设的MariaDB没有密码,直接Enter即可)2.Switch to unix_socket authentication [Y/n] n
(是否切换unix_socket安全认证,这里输入的n,即不切换)3.Change the root password? [Y/n] y
(是否修改root账户的密码,输入的y,即会修改root密码
注意:
- root密码最好是复杂密码,否则可能会每次连接MariaDB时需要加sudo
- 在设置密码时,输入密码时是不会跳光标的
- 本文将密码设置成abc@@123
)4.Remove anonymous users? [Y/n] y
(是否删除匿名用户,这里输入的是y,即删除匿名用户
默认情况下,MariaDB安装有匿名用户,允许任何人登录MariaDB而无需为其创建帐户,在生产环境中一定要删除
)5.Disallow root login remotely? [Y/n] y
(是否允许远程登录root账户,否则只能在localhost上登录root账户,这里输入的y,即不允许远程登录root账户)6.Remove test database and access to it? [Y/n] y
(是否删除test数据库,这里输入的y,即删除test数据库
默认情况下,MariaDB有一个test数据库,允许任何用户获取
)7.Reload privilege tables now? [Y/n] y
(是否重新加载权限表,这里输入的y,即立即重新加载)

(5)常见问题及解决

  • 连接 MariaDB 需要sudo的问题(mysql有类似问题)

问题描述:在Ubuntu 18.04 版本中安装 MariaDB 后,每次访问MariaDB 需要加 sudo 才能访问。

原因:MariaDB 中 root 用户的密码强度不是强类型。

解决方案:将root账户的密码修改为强类型的密码,例如包含大小写字母、数字、符号的至少 8 位数。比如下面的命令将密码修改成abc@@123

SET PASSWORD = PASSWORD('abc@@123');
  • 远程不能访问

问题描述:不能使用服务器的ip地址连接数据库

原因:默认将ip绑定在了127.0.0.1上,所以只能使用127.0.0.1或者localhost进行连接

解决方案:修改配置文件/etc/mysql/mariadb.conf.d/50-server.cnf

sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf

修改[mysqld]下的参数 bind-address = 127.0.0.1 => bind-address = 0.0.0.0

然后重启MariaDB service

sudo service mariadb restart

MariaDB/MySQL数据库读取配置文件的顺序如下:

  1. “/etc/mysql/my.cnf” symlinks to this file, reason why all the rest is read.

  2. “/etc/mysql/mariadb.cnf” (this file) to set global defaults,

  3. “/etc/mysql/conf.d/*.cnf” to set global options.i

  4. “/etc/mysql/mariadb.conf.d/*.cnf” to set MariaDB-only options.

  5. “~/.my.cnf” to set user-specific options.

2. Hive安装

1) 下载Hive安装包

下载地址:https://dlcdn.apache.org/hive/, 本文下载版本为:apache-hive-2.3.9

录然也可以在windows上通过迅雷等加速软件下载好以后,再使用sftp工具上传到相应目录

cd ~/soft
wget https://dlcdn.apache.org/hive/hive-2.3.9/apache-hive-2.3.9-bin.tar.gz

2)安装Hive

tar -xvf apache-hive-2.3.9-bin.tar.gz -C ~/opt
cd ~/opt
ln -s apache-hive-2.3.9-bin/ hive

配置环境变量

vi ~/.bashrc

在末尾添加如下内容:

export HIVE_HOME=/home/xiaobai/opt/hive
export PATH=$HIVE_HOME/bin:$PATH

使配置生效

source ~/.bashrc

3)上传MySQL驱动

MySQL的连接驱动的下载页面:https://downloads.mysql.com/archives/c-j/

这里使用wget下载5.1.49版本的连接器:

cd ~/soft
wget https://cdn.mysql.com/archives/mysql-connector-java-5.1/mysql-connector-java-5.1.49.tar.gz
tar -xvf mysql-connector-java-5.1.49.tar.gz
cp mysql-connector-java-5.1.49/mysql-connector-java-5.1.49.jar   ~/opt/hive/lib

当然也可以在windows上下载好相应的连接器,然后将其传入目录$HIVE_HOME/lib即可

4)修改配置文件

配置文件:hive-site.xml

常用配置参数介绍:

属性名称 类型 默认值 描述
hive.metastore.warehouse.dir URI /user/hive/warehouse 相对于fs.defaultFS的目录,托管表就存储在这里
hive.metastore.uris 逗号分隔的URI 未设定 如果未设置(默认值),则使用当前的metastore,否则连接到由URI列表指定要连接的远程metastore服务器。如果有多个远程服务器,则客户端便以轮询方式连接
javax.jdo.option.ConnectionURL URI jdbc:derby:;databaseName=metastore_db;create=true JDBC URL, mysql示例: jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true
javax.jdo.option.ConnectionDriverName String org.apache.derby.jdbc.EmbeddedDriver JDBC驱动器的类名 mysql示例: com.mysql.jdbc.Driver
javax.jdo.option.ConnectionUserName String APP JDBC用户名
javax.jdo.option.ConnectionPassword String mine JDBC密码

打开hive-site.xml

vi ~/opt/hive/conf/hive-site.xml

添加如下内容

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://node1:3306/hive?useSSL=false&amp;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>hive_pwd</value></property><property> <name>hive.server2.thrift.port</name> <value>10000</value> </property><property><name>hive.server2.thrift.bind.host</name><value>node1</value></property>
</configuration>

特别注意:这里设置的数据库主机为node1, 需要解决数据库**远程不能访问**的问题

5)元数据初始化

(1)数据库对账号授权

mysql -uroot -pabc@@123
grant all privileges on hive.* to 'hive'@'%' identified by 'hive_pwd';

(2)初始化元数据

schematool -dbType mysql -initSchema

3. 测试环境

1)启动hdfs和yarn

#确保启动hdfs和yarn
start-dfs.sh
start-yarn.sh

2)CLI命令窗口

#进入hive的CLI命令窗口,hive命令后不跟参数时,默认启动cli,即下面命令等价于hive
hive --service cli

3)beeline客户端

(1)启动HS2服务

使用beeline客户端,需要启动hiveserver2服务(HS2)

nohup hive --service hiveserver2 &

在启动一些后台守护进程时经常搭配使用nohup&: nohup <程序名> &

  • 使用nohup运行程序

    • 使用Ctrl + C发送SIGINT信号,程序关闭
    • 关闭session发送SIGHUP信号,程序免疫
  • 使用&后台运行

    • 使用Ctrl + C发送SIGINT信号,程序免疫
    • 关闭session发送SIGHUP信号,程序关闭

(2)启动beeline

#启动beeline
beeline#在交互界面输入连接信息:
!connect  jdbc:hive2://node1:10000#输入用户名和密码#查看所有数据库
show databases;

也可以在beeline启动时就指定相应连接参数

beeline -u jdbc:hive2://node1:10000 -n xiaobai -p 123456
  • -u: 连接的JDBC URL
  • -n: 连接的用户名
  • -p: 连接的密码

至此,大功告成!!!

Hive环境搭建(保姆级教程)相关推荐

  1. APP自动化测试——Appium运行环境搭建保姆级教程

    APP自动化测试运行环境比较复杂,稍微不注意安装就会失败.我见过不少朋友,装了1个星期,Appium 的运行环境还没有搭好的. 搭建环境本身不是一个有难度的工作,但是 Appium 安装过程中确实存在 ...

  2. 域环境的搭建(保姆级教程)

    域环境的搭建(保姆级教程) 一.基础知识 二.实验环境 三.实验步骤 1.设置静态ip地址 我们给server 2008 设置静态ip地址 2.安装活动目录角色 2.1 点击添加角色 2.2 我们单击 ...

  3. CSGO饥荒服务器搭建保姆级教程

    CSGO&饥荒服务器搭建保姆级教程 准备 第一步:软硬件 软件:Xshell.Xftp用于连接云服务器和进行文件传输. 进去填写邮箱,他会给你发个邮件,通过邮件获得下载链接,通过下载链接下载X ...

  4. 个人网站搭建保姆级教程(2)- 前端工程umi脚手架搭建

    前言 最近搞了个服务器,想着自己做个网站的脚手架,因为自己是纯前端新手,而且半路出家,中途踩了好多坑,准备写5篇给各位大佬们分享一下,如何从0搭建个人网站 服务器购买与环境搭建 前端工程umi脚手架搭 ...

  5. 本地k8s集群搭建保姆级教程(4)-安装k8s集群Dashboard

    安装k8s集群管理UI 1 Dashboard安装 1.1 参考文档 Dashboard 是基于网页的 Kubernetes 用户界面. 你可以使用 Dashboard 将容器应用部署到 Kubern ...

  6. 安装conda搭建python环境(保姆级教程)

    目录 一.Anaconda简介 二.Anaconda安装 2.1 Anaconda下载 2.2 Anaconda安装 2.3 配置环境变量 三.通过conda配置python环境 3.1 创建并激活虚 ...

  7. Mac Xcode opencv C++环境配置 保姆级教程 填坑记录 19年最新版本

    网上找了很多教程,照着做都失败了,整整弄了两天两夜,终于好了.网上根本没有人遇到我的坑么?都搜不到,国外也没搜到,呜呜- 版本说明: 1.(必备)MacBook系统:macOS Catalina(版本 ...

  8. 五万字 | Hive知识体系保姆级教程

    文档目录如下: Hive涉及的知识点如下图所示,本文将逐一讲解: 本文较长,获取本文完整PDF文档,请扫码关注公众号[五分钟学大数据],后台发送:hive pdf,即可下载带目录的完整版Hive文档: ...

  9. Conda各平台安装配置和使用Python环境(保姆级教程)

    Conda是python程序运行环境的管理工具.Python是目前最流行的计算机语言,由于python是胶水语言,功能上的实现依赖第三方包.有的python脚本需要特定版本的依赖包运行,如果直接在电脑 ...

  10. 配置vscode C语言运行环境(保姆级教程)

    基本步骤 首先是安装一个软件,安装完成之后就需要配置了 因为VSCode不能直接拿来写C,所以需要相关插件, 然后任何语言的程序在运行前都需要编译,那还需要一个编译器,很可惜VSCode插件里面不自带 ...

最新文章

  1. Django 分页和使用Ajax5.3
  2. 【React系列】状态(State)和生命周期
  3. 我进公司当Android开发实习生时,初中最差的同学成了我的领导
  4. Apache Mahout 简介
  5. Java监听器用法(三):外部类监听器
  6. thinkphp 助手函数url不生成https_thinkphp5.0 URL 地址生成
  7. Codeforces Round #264 (Div. 2) 解题报告
  8. Git安装及基本配置
  9. 十三届蓝桥杯EDA省赛赛后感
  10. 漂浮广告代码、漂浮代码分析(讲解)
  11. 防火墙基础之华为防火墙分支与分支IPSec 对接
  12. 大语言模型将如何影响软件开发?
  13. 怎么查看电脑内存的型号
  14. bilstm-crf_序列标注问题
  15. VIVADO中IO管脚分配 IO PLANING
  16. 54个提高PHP程序运行效率的方法(转载)
  17. 戴维斯双击策略的实现与验证
  18. Lua string字符串相关操作
  19. 苹果ipad怎么刷机_苹果手机:iOS 13.7 测试版_iOS 13.7 测试版一键刷机教程
  20. 树莓派 ubuntu系统 : mysql.service: Failed with result ‘exit-code‘

热门文章

  1. 终于可以卖广告盈利了——写博客,赚广告费!
  2. ToggleButtonBar的使用
  3. 浅谈Java8之lambda表达式
  4. 网页 变黑白网页(灰色)
  5. 自学UG编程难吗?怎么样才能学好大型汽车模具编程?
  6. setup time和hold time
  7. MySQL系列4—数据库安全性
  8. 大一期末程序课程设计 C/C++实现简单学生学籍管理系统
  9. 照片:Majoy是什么东西?
  10. SpringCloud从入门到精通教程/SpringCloud Alibaba从入门到精通教程