Hive安装部署
感性认知:
数据库与数据仓库
数据库:
mysql、oracle、sqlserver、DB2、sqlite、MDB
数据仓库:
Hive,是MR的客户端,也就是说不必要每台机器都安装部署Hive本质是什么?
理性认知:Hive的特性
1、操作接口是采用SQL语法,HQL
2、避免了写MapReduce的繁琐过程Hive体系结构
1、Client
** 终端命令行
** JDBC -- 不常用,非常麻烦(相对于前者)
2、metastore
** 原本的数据集和字段名称以及数据信息之间的双射关系。
** 我们目前是存储在Mysql中
3、Server-Hadoop
** 在操作Hive的同时,需要将Hadoop的HDFS开启,YARN开启,MAPRED配置好-
Hive的部署与安装
1、解压Hive到安装目录
mv hive-default.xml.template hive-site.xml
su - rootyum -y install mysql mysql-server mysql-devel
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum -y install mysql-community-server
尖叫提示:如果使用离线绿色版本(免安装版本)需要手动初始化Mysql数据库
5、配置Mysql
** 开启Mysql服务
# systemctl start mysqld.service
** 设置root用户密码
# mysqladmin -uroot password '123456'
** 为用户以及其他机器节点授权
mysql> grant all on . to [email protected]'hadoop-senior01.itguigu.com' identified by '123456';
grant all on . to [email protected]'hadoop104' identified by '000000';grant:授权 all:所有权限 *.*:数据库名称.表名称 root:操作mysql的用户 @'':主机名 密码:123456
** hive-site.xml
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop-senior01.itguigu.com:3306/metastore?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>password to use against metastore database</description>
</property>
** hive-log4j.properties
hive.log.dir=/opt/modules/cdh/hive-0.13.1-cdh5.3.6/logs
** 拷贝数据库驱动包到Hive根目录下的lib文件夹
bin/hive
** 修改HDFS系统中关于Hive的一些目录权限
/opt/modules/cdh/hadoop-2.5.0-cdh5.3.6/bin/hadoop fs -chmod 777 /user/hive/warehouse
** 显示数据库名称以及字段名称
<property>
<name>hive.cli.print.header</name>
<value>true</value>
<description>Whether to print the names of the columns in query output.</description>
</property>
<!-- 是否在当前客户端中显示当前所在数据库名称 -->
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
<description>Whether to include the current database in the Hive prompt.</description>
</property>
** 创建数据库
hive> create database staff;
** 创建表操作
hive> create table t1(eid int, name string, sex string) row format delimited fields terminated by '\t';
** 导入数据
*** 从本地导入
load data local inpath '文件路径' into table;
*** 从HDFS系统导入
推荐阅读