概述
Hive简介:
1.什么是Hive?
Hive:由Facebooke开源,用于解决海量结构化日志的数据统计
Hive是一个构建在Hadoop上的数据仓库框架(工具),可以将结构化的数据文件映射为一张表,并提供类似SQl查询功能。
其设计目标是使Hadoop上的数据操作与传统SQL结合,让熟悉SQL编程的开发人员能够轻松向Hadoop平台转移。
本质是:将HQL转化成MapReduce程序
1)Hive处理的数据存储在HDFS中,元数据存储在关系型数据库中
2)Hive分析数据底层的实现是MapReduce
3)执行程序运行在Yarn上
由于Hadoop基本上是用于处理数据的应用程序,并且大多数据仓库应用程序已经实现了SQL语言,
因此,Hive是Hadoop生态系统中最有名和使用最广泛的项目.
(Hive的简单体系结构图.png)
客户端的连接方式可采用: CLI(hive shell) 和 JDBC Driver (Java访问Hive) 、WEBUI(浏览器访问Hive)
【注意:Hive实质就是客户端,不存在主从结构,搭建过程没有集群概念;】
2.数据仓库和数据库:
关系型数据库:OLTP联机事务处理 ACID,实时处理 -->持久化对数据的存储
数据仓库:OLAP联机分析处理:统计、处理和加工(分析操作),离线处理,大数据集;
--> 假如我们查询几年内的淘宝订单,数据从数据库里获得 但是查询出来的淘宝订单的数据,它是一个数据的仓库, 数据仓库中专门用来做一些查询数据库的SQL语句,很多数据称为仓库
hive是以SQl的方式操作hadoop的框架
Hive数据有两部分组成:
1)hive数据存储在hdfs上
2) hive的元数据存储在关系型数据库中,hive默认的元数据存储在derby
3.搭建Hive
准备:
a.Hadoop集群搭建完成!
b.zkServer.sh start 开启zookeeper
start-dfs.sh start 开启HDFS
start-yarn.sh start开启yarn
1).安装java
2).安装Hadoop
3).安装hive
$>cp /mnt/hgfs/工具/apache-hive-1.2.1-bin.tar.gz ~/apps/
$>tar -zxvf apache-hive-1.2.1-bin.tar.gz
$>ln -s apache-hive-1.2.1-bin hive
配置环境变量:
【~/.bash_profile】
#hive install
export HIVE_HOME=/home/hyxy/soft/hive
export PATH=$HIVE_HOME/bin:$PATH
$>source ~/.bash_profile
4).开启集群相关服务:
$>zkServer.sh start
$>start-all.sh
5).进入Hive
$>hive
6).测试:
hive>show databases;
hive>use default;
hive>show tables;
hive>desc tables;
hive>create table text(id int ,name String);
hive>insert into text values(1,'zhangsan');
hive>select * from text;
hive>drop table text;
hive> quit; //如不在原路径下,退出后之前表消失 即临时表,理解内嵌模式
7)查看yarn :master:8088
hdfs: hadoop fs -lsr /
rwx-wx-wx - hyxy supergroup 0 2018-05-23 14:09 /tmp/hive
drwx------ - hyxy supergroup 0 2018-05-23 14:38 /tmp/hive/hyxy
drwxr-xr-x - hyxy supergroup 0 2018-05-23 14:10 /user
drwxr-xr-x - hyxy supergroup 0 2018-05-23 14:10 /user/hive
drwxr-xr-x - hyxy supergroup 0 2018-05-23 14:33 /user/hive/warehouse
drwxr-xr-x - hyxy supergroup 0 2018-05-23 14:12 /user/hive/warehouse/text
-rwxr-xr-x 2 hyxy supergroup 11 2018-05-23 14:12 /user/hive/warehouse/text/000000_0
drwxr-xr-x - hyxy supergroup 0 2018-05-23 14:33 /user/hive/warehouse/text1
[hyxy@master Desktop]$ hadoop fs -cat /user/hive/warehouse/text/000000_0
1zhangsan
查看hive默认加载的配置文件:
[hyxy@master conf]$ cat hive-default.xml.template Hive配置是Hadoop之上的覆盖 - 它默认继承Hadoop配置变量
<property>
<name>hive.user.install.directory</name>
<value>hdfs:///user/</value>
<description>
If hive (in tez mode only) cannot find a usable hive jar in
"hive.jar.directory",
it will upload the hive jar to "hive.user.install.directory/user.name"
and use it to run queries.
</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:;databaseName=metastore_db;create=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
8)metastore_db 、derby.log (在当前路径下查看)
如果第一次我们在Desktop运行hive Cli客户端,
第二次在~/soft运行hive Cli,因为没有metastore_db 、derby.log,所以之前创建的数据库不存在
如果删除metastore_db 那么,hive 下的数据也不存在,但hdfs文件依然存在
可以通过配置文件设置永远保存在一个路径下的metastore_db 、derby.log,这样不管在哪里都可以查询之前创建的数据
1.查看数据库 创建数据库 使用数据库 创建表
hive> show databases;
hive> create database myhive;
hive> use myhive;
page472
hive> create table student(sno string,name string ,age int)
> row format delimited fields terminated by ',';
2.webUI查看数据仓库位置:已创建表
3.在另一个节点slave1中上传数据,按照规则以逗号分格内容
$> vim t1.txt
$> cat t1.txt
1201212112,zhangsan,23
2334342342,lisi,24
2323232323,zhaoliu,22
4.查看hdfs
drwxr-xr-x - hyxy supergroup 0 2019-05-23 14:10 /user
drwxr-xr-x - hyxy supergroup 0 2019-05-23 14:10 /user/hive
drwxr-xr-x - hyxy supergroup 0 2019-05-23 16:24 /user/hive/warehouse
drwxr-xr-x - hyxy supergroup 0 2019-05-23 16:25 /user/hive/warehouse/myhive.db
drwxr-xr-x - hyxy supergroup 0 2019-05-23 16:25 /user/hive/warehouse/myhive.db/student
5.将文件上传到表下面
$> hadoop fs -put t1.txt /user/hive/warehouse/myhive.db/student
6.查看hive表
hive> select * from student;
OK
1201212112 zhangsan 23
2334342342 lisi 24
2323232323 zhaoliu 22
7. 重复 5 6
【hive不支持存储过程和触发器,不技术高级编程】
Hive 架构:
1.hive是数据仓库,在Hadoop基础上处理结构化数据;
它驻留在hadoop之上,用户对数据的统计、查询和简单的分析操作;
2.hive不是:
a.关系型数据库;
b.联机事务处理OLTP(on-line transaction processing)
c.实时查询和行级更新操作
3.hive特点:
a.表模型存储在database(关系型)中,处理的数据存储在HDFS上;
b.设计模式遵循联机分析处理OLAP(On-Line Analytical Processing)
OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
c.它提供了一套类SQL的语言(HiveQL or HQL),用于执行查询;
d.它是简单的、快速的、可扩展的和易伸缩的;
Hive的优缺点:
1)Hive优点:
a.操作接口采用类似SQL语法,提供快速开发的能力(简单、容易上手)
b.避免了去写MapReduce,减少开发人员的学习成本
c.Hive的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合
d.Hive的优势在于处理大数据,对于处理小数据库没有优势,因为Hive的执行延迟比较高
e.Hive支持用户自定义函数,用户可以根据自已的需求来实现自己的函数
2) Hive缺点:
a.Hive的HQL表达能力有限
a).迭代式算法无法表达
b).数据挖掘方面不擅长
b.Hive的效率比较低
a)Hive自动生成的MapReduce作业,通常情况下不够智能化
b)Hive调优比较困难,粒度较粗
4.hive架构(参照图) page2:
a.(用户接口)User Interface:hive提供Web UI 、command line和HD Insight;
客户端的连接方式可采用:CLI(hive shell) 和 JDBC Driver (Java访问Hive) 、WEBUI(浏览器访问Hive)
b.(元数据):hive选择独立的的数据库(MySQL)用于存储metadata
元数据包含:表的信息、databases信息、表的列信息、字段类型信息和HDFS mapping(映射);
c.(HQL处理引擎)HiveQL Process Engine:HiveQL类似于SQL,用于查询转移的模式信息。
它是对MapReduce程序的传统方法的替换之一
d.(执行引擎)Execution Engine:HiveQL流程引擎和MapReduce的连接部分是Hive执行引擎。
执行引擎处理查询并生成与MapReduce 的结果
e.(HDFS or HBASE):Hadoop分布式文件系统或HBASE是将数据存储到文件系统中的数据存储技术。
Hive的工作流程:
1.(执行查询操作)Execute Query
命令行或Web UI之类的Hive接口将查询发送给Driver(任何数据库驱动程序,如JDBC、ODBC等)以执行。
2.(获取计划任务)Get Plan
Driver借助查询编译器解析查询,检查语法和查询计划或查询需求
3.(获取元数据信息)Get Metadata
编译器将元数据请求发送到Metastore(任何数据库)。
4.(发送元数据)Send Metadata
Metastore将元数据作为对编译器的响应发送出去。
5.(发送计划任务)Send Plan
编译器检查需求并将计划重新发送给Driver。到目前为止,查询的解析和编译已经完成
6.(执行计划任务)Execute Plan
Driver将执行计划发送到执行引擎。
7.(执行Job任务)Execute Job
在内部,执行任务的过程是MapReduce Job。执行引擎将Job发送到ResourceManager,
ResourceManager位于Name节点中,并将job分配给datanode中的NodeManager。
在这里,查询执行MapReduce任务.
7.1.(元数据操作)Metadata Ops
在执行的同时,执行引擎可以使用Metastore执行元数据操作。
8.(拉取结果集)Fetch Result
执行引擎将从datanode上获取结果集;
9.(发送结果集至driver)Send Results
执行引擎将这些结果值发送给Driver。
10.(driver将result发送至interface)Send Results
Driver将结果发送到Hive接口
Hive元数据放置采用内嵌、独立、远程三种模式安装:
内嵌模式:元数据保持在内嵌的derby模式,只允许一个会话连接。
本地独立模式:需要准备一个额外的数据库,目前较流行的是在本地安装Mysql数据库。
远程模式:元数据放置在远程的Mysql数据库中
hive将元数据存储在默认的derby数据库中,derby数据库只有一个连接,
所以我们改成mysql数据库;而真实的数据存储在hdfs上
Hive安装(基于MySQL):
在线安装方式:
1.验证Centos是否安装MySQL
$>yum list installed | grep mysql
2.删除MySql
$>yum –y remove mysql-libs.X86_64
或
$>yum erase mysql-libs.x86_64
3.验证删除是否成功!
$>yum list installed | grep mysql
4.在线安装MySQL
$>su root
$>yum install mysql
$>yum install mysql-server
5.开启mysql服务
$> service mysqld start
6.验证是否成功
$> service mysqld status
$> netstat -nat (查看3306端口是否开启)
安装完成之后退出到普通用户hyxy
7.root进入Mysql;
$>mysql –u root –p (回车,密码为空,回车),
进入到mysql命令行页面
$>quit;
修改root用户的密码
在mysql系统外执行,使用mysqladmin
#> mysqladmin -u root -p password "123456"
Enter password: 【输入原来的密码】
navicat登录连接,如果不给权限无法访问
授权格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";
授予其它权限登录root用户,密码是123456 %对所有的用户都可以登录
将所有表权限都给root ,并且root在所有机器都可以访问
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> flush privileges;
8. 创建hyxyhive1用户和hive数据库
mysql> create user 'hyxyhive1' identified by '123456';
mysql> CREATE DATABASE hive;
MySQL授权 hive数据库hyxyhive1用户
mysql> GRANT ALL PRIVILEGES ON hive.* TO 'hyxyhive1'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
drop
9. MySQL授权(配置元数据) ****hive配置数据库时连接master ***
mysql> GRANT ALL PRIVILEGES ON *.* TO 'hyxyhive1'@'master' IDENTIFIED BY '123456' WITH GRANT OPTION;
%:远程所有主机
GRANT ALL PRIVILEGES ON *.* TO 'hyxyhive1'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'hyxyhive1'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> flush privileges;
10.查看root用户有哪些权限
mysql> show grants for 'root';
+--------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@% |
+--------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' WITH GRANT OPTION |
+--------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
11.删除用户
DROP USER 'username'@'host';
mysql> drop user 'hyxyhive1'@'localhost';
离线安装MySQL:
1.验证Centos是否安装MySQL
$>yum list installed | grep mysql
2.删除MySql
$>yum –y remove mysql-libs.X86_64
或
$>yum erase mysql-libs.x86_64
3.验证删除是否成功!
$>yum list installed | grep mysql
4.下载mysql二进制文件mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
$>su root
5.将mysql压缩包拷贝到/usr/local/目录下:
$>cd /usr/local
$>cp /mnt/hgfs/工具/mySql安装/linux/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz .
.
6.解压:
$>tar -zxvf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
并重命名mysql:
$>mv mysql-5.7.21-linux-glibc2.12-x86_64 mysql
删除原压缩包:
$>rm mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
7.创建mysql用户组:
$>groupadd mysql
在创建的mysql用户组中创建一个新用户mysql:
$>useradd -r -g mysql mysql
进入目录:
$>cd /usr/local/mysql
修改目录的拥有者:
chown -R mysql .
chgrp -R mysql .
(这里的点“.”代表的就是当前目录,选项-R表示递归当前目录及其子目录)
8.创建数据库存放文件夹和相关文件并修改权限
$>sudo mkdir -pv /data/mysqldb/3306/{logs,run,data}
$>sudo touch /data/mysqldb/3306/run/mysqld.pid
$>sudo touch /data/mysqldb/3306/logs/mysql-error.log
$>sudo chown -R mysql.mysql /data/mysqldb/
$>sudo chmod -R 777 /data/mysqldb
文件没有创建的话,启动Mysql时将会报错
9.修改配置文件
$>cd /usr/local/mysql
$>sudo vim my.cnf
------------------------------------------------------------------------
[client]
port=3306
socket=/data/mysqldb/3306/mysql.sock
default_character_set=utf8
[mysqld]
user=mysql
port=3306
socket=/data/mysqldb/3306/mysql.sock
basedir=/usr/local/mysql
datadir=/data/mysqldb/3306/data
pid-file=/data/mysqldb/3306/run/mysqld.pid
log-error=/data/mysqldb/3306/logs/mysql-error.log
character_set_server=utf8
[mysql]
socket=/data/mysqldb/3306/mysql.sock
[mysqldump]
socket=/data/mysqldb/3306/mysql.sock
[mysqladmin]
socket=/data/mysqldb/3306/mysql.sock
------------------------------------------------------------------------
10.初始化mysql安装:
$>cd /usr/local/mysql
$>sudo ./bin/mysqld --defaults-file=/usr/local/mysql/my.cnf --initialize-insecure --user=mysql -- datadir=/data/mysqldb/3306/data
Mysql 5.7以后对密码安全有更友好的提示了,
--initialize-insecure 以空密码初始化数据库
--initialize 随机生成一个密码并显示在屏幕中,第一次登录的时候必须提供此密码
11.把启动脚本放到开机初始化目录,添加开机启动mysql服务
复制启动服务脚本至/etc/init.d目录:
$>cd /usr/local/mysql
$>sudo cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
$>sudo chkconfig --add mysqld
$>sudo chkconfig mysqld on
$>chkconfig --list mysqld
$>chkconfig --del mysqld
12.启动mysql服务
安装好mysql后,就可以试着启动它,使用如下命令:
sudo service mysqld start
或
cd /usr/local/mysql
sudo ./support-files/mysql.server start
查看mysql服务是否启动:
ps -ef|grep mysql
看到mysql服务说明启动成功。
13.配置环境变量:
打开/etc/profile文件:
sudo gedit /etc/profile
在文件的最后,加上下面两行:
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
保存并关闭文件,执行以下命令使得环境变量生效:
source /etc/profile
14.修改root的密码:
进行安全配置(设置密码)
执行命令:
$>mysql -u root -p
回车执行后,因为一开始没有设置密码,所以这里不需要输入密码,直接回车即可登录。
执行成功后,控制台显示 mysql>,则表示进入mysql
输入命令(注意分号):
mysql> set password for 'root'@'localhost'=password('123456');
此时root用户的密码修改为123456。
退出mysql:
mysql> quit
重新登录:
mysql -u root -p
输入密码admin即可登录。
15.创建hive所需的账户和数据库
a.root进入Mysql;
$>mysql –u root –p (回车,密码为空,回车),进入到mysql命令行页面
b.创建hive数据库、为hyxyhive1建立mysql账户
mysql> create user 'hyxyhive1' identified by '123456';
mysql> CREATE DATABASE hive;
c.MySQL授权
mysql> GRANT ALL PRIVILEGES ON hive.* TO 'hyxyhive1'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
将所有表权限都给root ,并且root在所有机器都可以访问:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> flush privileges;
16.配置Mysql服务远程可访问
a.连接MySQL 服务器:
mysql -u root -p
会提示输入管理员密码。注意,这里输入的密码不会回显。
b.使用如下命令,授权root 用户远程连接服务器:
mysql> grant all privileges on *.* to 'root'@'%' identified by "admin" with grant option;
mysql> flush privileges;
c.退出mysql 连接:
卸载旧的MySql程序:
第一步 查找以前是否安装有mysql
使用命令查看是否已经安装过mysql:
root#>rpm -qa | grep -i mysql
如果没有结果,则可以进行mysql数据库安装
第二步 如果有,则先停止mysql服务并删除之前安装的mysql
如果之前安装过MySql,则先停止mysql服务 service mysqld stop、然后删除之前安装的mysql
#rpm -ev MySQL-server-5.6.21-1.el6.x86_64
#rpm -ev MySQL-devel-5.6.21-1.el6.x86_64
#rpm -ev MySQL-client-5.6.21-1.el6.x86_64
如果未安装mysql,但是存在CentOS自带mysql-libs-5.1.71-1.el6.x86_64使用下面的命令卸载即可
#rpm -ev --nodeps mysql-libs-5.1.71-1.el6.x86_64
第三步 查找之前老版本mysql的目录并且删除老版本mysql的文件和库
#find / -name mysql
如果存在目录,则删除对应的mysql目录,如下删除已经存在的目录:
#rm -rf /usr/lib64/mysql
#rm -rf /var/lib/mysql
第四步 再次查找机器是否安装mysql
#rpm -qa | grep -i mysql
无结果,说明已经卸载彻底、接下来直接安装mysql即可
Hive on Mysql:
2.修改hive的配置文件 参照权威指南
a.{HIVE_HOME/conf}目录下,复制hive-env.sh.template
$>cp hive-env.sh.template hive-env.sh
$>gedit hive-env.sh
添加:【 export HADOOP_HOME=/home/hyxy/soft/hadoop 】
b.{HIVE_HOME/conf}目录下,复制hive-default.xml.sh.template
$>cp hive-default.xml.template hive-site.xml
$>gedit hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.exec.scratchdir</name>
<value>/tmp/hive</value>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/home/hyxy/tmp/hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hyxyhive1</value><!--用户名-->
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/hive?
createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
</configuration>
c.将MySQL的连接驱动包拷贝至{HIVE_HOME/lib}下
$>cd /home/hyxy/soft/hive/lib
$>cp /mnt/hgfs/工具/mysql-connector-java-5.1.36.jar .
在hdfs创建目录及设置权限(参照官网执行)
启动服务 master> slave1> slave2> zkServer.sh start 三台服务器
start-dfs.sh
start-yarn.sh
依次执行下面语句:
$>hadoop fs -mkdir /tmp
$>hadoop fs -mkdir -p /user/hive/warehouse
$>hadoop fs -chmod g+w /tmp
$>hadoop fs -chmod g+w /user/hive/warehouse
d.开启hadoop集群;
先确保mysql服务已启动,否则元数据无法存储:
root #> service mysqld start
验证是否成功
root #> service mysqld status
$> netstat -nat (查看3306端口是否开启)
(注意如果不好使,需要reboot)
e.执行hive命令
$>hive
$>!clear; 清屏
如果不启动mysql服务报以下错误:
ltDB(HiveMetaStore.java:624)
at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.init(HiveMetaStore.java:461)
at org.apache.hadoop.hive.metastore.RetryingHMSHandler.<init>(RetryingHMSHandler.java:66)
at org.apache.hadoop.hive.metastore.RetryingHMSHandler.getProxy(RetryingHMSHandler.java:72)
at org.apache.hadoop.hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.java:5762)
at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.java:199)
at org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient.<init>(SessionHiveMetaStoreClient.java:74)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1521)
报以下错误:
e1. Terminating connection pool (set lazyInit to true if you expect to start your database after your app). Original Exception: ------
java.sql.SQLException: Access denied for user 'hyxyhive1'@'master' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3847)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3783)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:871)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4292)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1259)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2249)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2280)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2079)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
解决办法:
****hive配置数据库时连接master ***
GRANT ALL PRIVILEGES ON *.* TO 'hyxyhive1'@'master' IDENTIFIED BY '123456' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'hyxyhive1'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> flush privileges;
测试,启动hive 要先启动zkServer 和 hdfs yarn
1.创建一个数据仓库
hive> show databases;
hive> create database myhive;
hive> use myhive;
page472
hive> create table student333(sno string,name string ,age int)
> row format delimited fields terminated by ',';
2.webUI查看数据仓库位置:已创建表
3.在另一个节点slave1中上传数据,按照规则以逗号分格内容
$> vim t1.txt
$> cat t1.txt
1201212112,zhangsan,23
2334342342,lisi,24
2323232323,zhaoliu,22
4.元数据存放位置:
登录查看mysql -u hyxyhive1 -p 123456
TBLS DBS COLUMNS_V2
5.hive数据存放的位置: 查看hadoop fs -lsr /user
最后
以上就是虚心香氛为你收集整理的《Hive 1》--Hive的简介、搭建hive、hive的架构、hive的工作流程、hive两种安装(基于Mysql)、hive on MysqlHive简介:的全部内容,希望文章能够帮你解决《Hive 1》--Hive的简介、搭建hive、hive的架构、hive的工作流程、hive两种安装(基于Mysql)、hive on MysqlHive简介:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复