菜鸟先飞之初识Hive、安装教程及常见问题

一、初识Hive

1、什么是Hive

Hive是基于Haddop的数据仓库工具,可以将结构化的数据文件映射为一张数据库表并提供SQL查询功能,可以将SQL语句转换

MapReduce任务运行。

Hive提供了一系列的工具,可以给用来数据提取转换加载(ETL)是一种存储、查询和分析存储在Hadoop中的大规模数据的机制

2、Hive发展历史及版本

2007年8月 – 始于Facebook

2013年5月 – 0.11 Stinger Phase 1 ORC HiveServer2

2013年10月 – 0.12.0 Stinger Phase 2 - ORC improvement

2014年4月 – Hive 0.13.0 as Stinger Phase 3

2014年11月 – Hive 0.14.0

2015年2月 – Hive 1.0.0

2015年5月 – Hive 1.2.0 (1.2.1 本系列课实验重点版本 )

2016年2月 – Hive 2.0.0 (添加 HPLSQL, LLAP)

2016年6月 – Hive 2.1.0 (2.1.0 本系列课实验补充版本 )

3、为什么要使用Hive

提供了一个简单的优化模型

HQL类SQL语法,简化MR开发

支持在不同的计算框架上运行

支持在HDFS和HBase上临时查询数据

支持用户自定义函数、格式

成熟的JDBC和ODBC驱动程序,用于ETL和BI

稳定可靠(真实生产环境)的批处理

有庞大活跃的社区

4、Hive体系架构

Hive的体系结构分以下几个部分

1)用户接口主要是3个:CLI,Client,HWI(Hive Web Interface)

2)Hive将元数据存储在数据库中,如MySQL、Derby。

3)解释器、编译器、优化器完成HQL查询语句从词法分析、语句分析、编译、优化到查询计划的生成。生成的查询计划存储在HDFS中,随后由MapReduce调用执行。
4)Hive的数据存储在HDFS中,大部分的查询、计算由MapReduce完成(注意 含*的查询,例如:select * from tbl 不会生成 MapReduce任务)

5、Hive与传统数据库

6、交互模式

7、Hive数据类型

1)原始数据类型(类似于SQL数据类型)

2)复杂数据类型

* ARRAY:存储的数据为相同类型
* MAP:具有相同类型的键值对
* STRUCT:封装了一组字段

8、Hive元数据结构

9、Hive数据表

分为内部表和外部表

1) 内部表(管理表)

HDFS中为所属数据库目录下的子文件夹

数据完全由Hive管理,删除表(元数据)会删除数据

2)外部表(External Tables)

数据保存在指定位置的HDFS路径中

Hive不完全管理数据,删除表(元数据)不会删除数据

10、Hive建表语句

create table student if not exists (

id int,

name string)

row format delimited fields terminated by ‘,’

location ‘/file’;

11、建表语句分析

二、配置Hive

1、安装准备

jdk-8u221-linux-x64.tar.gz

hadoop-2.6.0-cdh5.14.2.tar.gz

hive-1.1.0-cdh5.14.2.tar.gz

zookeeper-3.4.6.tar.gz

MySQL-client-5.6.46-1.el7.x86_64.rpm

MySQL-server-5.6.46-1.el7.x86_64.rpm

mysql-connector-java-5.1.48-bin.jar

更改主机名:hostnamectl set-hostname hadoop01

更改主机列表:vi /etc/hosts 新增:192.168.48.104 hadoop01保存退出

在opt目录下创建soft文件夹:mkdir /opt/soft

切换至soft文件夹 cd /opt/soft

将文件拖入此目录中

解压hadoop: tar -zxfhadoop-2.6.0-cdh5.14.2.tar.gz

解压hive:tar -zxfhive-1.1.0-cdh5.14.2.tar.gz

解压zookeeper:tar -zxfzookeeper-3.4.6.tar.gz

解压jdk: tar -zxf jdk-8u221-linux-x64.tar.gz

给文件夹改名:

mvhadoop-2.6.0-cdh5.14.2 hadoop

mvhive-1.1.0-cdh5.14.2 hive hive

mvzookeeper-3.4.6 zookpr

mvjdk-8u221-linux-x64 java8

配置免密登录:

ssh-keygen -t rsa -P ‘’

ssh-copy-id hadoop01

ps:需要稍等片刻

2、配置jdk及环境变量

vi /etc/profile

shift + g 最后一行添加

export JAVA_HOME=/opt/soft/java8

export JRE_HOME=/opt/soft/java8/jre

export CLASSPATH=.: J A V A _ H O M E / l i b / d t . j a r : JAVA\_HOME/lib/dt.jar: JAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

export HADOOP_HOME=/opt/soft/hadoop

export HIVE_HOME=/opt/soft/hive

export HADOOP_MAPRED_HOME=$HADOOP_HOME

export HADOOP_COMMON_HOME=$HADOOP_HOME

export HADOOP_HDFS_HOME=$HADOOP_HOME

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export HADOOP_OPTS=“-Djava.library.path=$HADOOP_HOME/lib”

export PATH= P A T H : PATH: PATH:JAVA_HOME/bin: J R E _ H O M E / b i n : JRE\_HOME/bin: JRE_HOME/bin:HADOOP_HOME/sbin: H A D O O P _ H O M E / b i n : HADOOP\_HOME/bin: HADOOP_HOME/bin:HIVE_HOME/bin

保存退出

使配置即时生效:source /etc/profile

3、配置hadoop

切换至:cd /opt/soft/hadoop/etc/hadoop 目录

vi core-site.xml

新增

fs.defaultFS

hdfs://192.168.48.104:9000

hadoop.tmp.dir

/opt/soft/hadoop/tmp

hadoop.proxyuser.root.hosts

*

hadoop.proxyuser.root.groups

*

vi hdfs-site.xml

dfs.replication

1

dfs.permissions.enable

false

vi mapred-site.xml

mapreduce.framework.name

yarn

vi yarn-site.xml

yarn.nodemanager.aux-services

mapreduce_shuffle

yarn.resourcemanager.localhost

localhost

修改jdk环境变量

vi hadoop-env.sh

export JAVA_HOME=/opt/soft/java8

4、配置zookeeper

切换目录至:cd /opt/soft/zookpr

将zoo_sample.cfg改名:mv zoo_sample.cfg/ zoo.cfg

修改zoo.cfg :vi zoo.cfg

修改:将路径改到zookpr目录下

dataDir=/opt/soft/zookpr/zookprdata

新增

server.1=hadoop01:2888:3888

mkdir /opt/soft/zookprzookprdata 使core-site.xml配置中的文件夹存在

格式化:hadoop namenode -format

运行zookper:start-all.sh

ps:首次需要输入四次yes

jps:查看进程如下图 配置无误

5、配置mysql

查看冲突软件:rpm -qa | grep mariadb

卸载冲突文件:rpm -emariadb-libs-5.5.64-1.el7.x86_64 --nodeps

切换至:cd /opt/soft 目录下

下载MySQL组件:

yum install -y nettools

yum install -y perl

yum install -y autoconf

解压客户端:rpm -ivh MySQL-client-5.6.46-1.el7.x86_64.rpm

解压服务端:rpm -ivh MySQL-server-5.6.46-1.el7.x86_64.rpm

启动数据库:service mysql start

修改配置文件: vi /usr/my.conf‘

[client]

default-character-set = utf8

[mysql]

skip-grant-tables

character-set-server = utf8

collation_server = utf8_general_ci

lower_case_table_names

保存退出

重启MySQL:service mysql restart

进入MySQL:mysql

使用数据库:use mysql

设置登陆密码:update user set password = password(‘ok’);

/q 退出数据库

6、配置Hive

切换至:cd /opt/soft/zookpr/conf 目录

新建hive-site.xml文件:vi hive-site.xml

hive.metastore.warehouse.dir

/usr/hive/warehouse

管理表存储的位置,可以是linux中的目录,也可以是相对于fs.default.name有关的目录

hive.metastore.local

true

javax.jdo.option.ConnectionURL

jdbc:mysql://127.0.0.1:3306/hivecreateDatabaseIfNotExist=true

javax.jdo.option.ConnectionDriverName

com.mysql.jdbc.Driver

javax.jdo.option.ConnectionUserName

root

javax.jdo.option.ConnectionPassword

ok

hive.server2.authentication

NONE

hive.server2.thrift.client.user

root

hive.server2.thrift.client.password

ok

更改hive-env.sh.template文件名:mv hive-env.sh.template hive-env.sh

修改hive-env.sh文件:vi hive-env.sh

export HADOOP_HOME=/opt/soft/hadoop

export HIVE_CONF_DIR=/opt/soft/hive/conf

export HIVE_AUX_JARS_PATH=/opt/soft/hive/lib

export JAVA_HOME=/opt/soft/java8

将mysql-connector-java-5.1.48-bin.jar移动到移动到/opt/soft/hive/lib目录下:

mv /opt/soft/mysql-connector-java-5.1.48-bin.jar /opt/soft/hive/lib

hadoop fs -ls / 查看hdfs目录文件

hadoop fs -mkdir -p /usr/hive/warehouse 创建管理表存储位置

hadoop fs-chmod -R 777 /usr/hive 给文件夹赋权

初始化 MySQL:schematool -dbType mysql -initSchema

关闭黑界面后台运行提示功能,节省一个后台窗口:

hive后台执行:nohup hive --service hiveserver2 &

beeline -u jdbc:hive2://localhost:10000 命令行模式

ps:最好在hive/bin目录下运行

要退出beeline :!q

hive 进入hive 交互模式

退出 quit; 或者 exit;

此时 jps

7、常见错误

1)未能成功连接数据库(命令行模式启动失败)

可能的原因:1、未启动Hive后台运行 2、数据库hive已经存在 3、配置文件更改后未重新启动

2)无法创建数据库

解决方案:查看hive-site.xml配置文件中的管理表存储的位置 文件夹是否存在 以及 有无赋权

3)无法删除数据库中的表

连接数据库的jar包版本较低,需要升级

4)未在hive/bin目录下运行beeline模式,导致的冲突问题

5)其他,欢迎补充

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值