Author:龙箬
数据科学与大数据技术专业
CSDN@weixin_43975035
他们说我无趣,是因为他们不知道,我在让世界变得更有趣!
Hive的安装部署
此篇Hive博客在大数据云平台上完成,与在自己电脑上搭建的Hadoop平台上的Hive安装部署部分不同。
输入su,使用root用户
1 下载安装包
apache-hive-1.2.1-bin.tar.gz;
mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
2 安装mysql
# cd /opt //到opt目录下
# tar -zxvf mysql-5.7.13-linux-glibc2.5-x86_64.tar.gz //解压mysql
# mv mysql-5.7.13-linux-glibc2.5-x86_64 mysql //重命名
# cd mysql //进去mysql目录
# mkdir data //在mysql中创建data目录
注意:忘记创建data目录后面可能会初始化失败
# vi /etc/profile //进入配置环境
延伸: linux下的大部分系统配置,都在/etc/目录下。
按i编辑,添加如下内容:
export MYSQL_HOME=/opt/mysql
export PATH=$PATH:$MYSQL_HOME/bin
按Esc键,然后:wq保存退出。
注意:不要忘记使环境变量生效。Source命令是使其生效。
# source /etc/profile //使环境变量生效
进入/opt目录,
# cd /opt //进入opt目录
# touch my.cnf //创建my.cnf文件
# vi my.cnf //编辑my.cnf文件
在my.cnf中添加如下内容:
注意:配置文件不要写错。配置文件写错,会导致很多莫名其妙的错误,很难排查。
退出,保存。
# cp my.cnf /etc //将/opt目录下的my.cnf文件复制到/etc目录下
#cd / //进去主目录
# /opt/mysql/bin/mysqld --initialize-insecure --basedir=/opt/mysql --datadir=/opt/mysql/data --user=root //初始化数据库
注意:这是一整行命令,命令中所有路径都是绝对路径
# cp /opt/mysql/support-files/mysql.server /etc/init.d/mysql //将mysql加入服务
# chkconfig mysql on //设置mysql开机自启
# service mysql start //启动mysql服务
# mysql -uroot -p //登录mysql,密码为空直接回车
#set password=password('shiyandb123456'); //在mysql登录进去后更改密码
#create database hive default charset utf8; //创建hive数据库
#grant all privileges on *.* to 'root'@'%' identified by 'shiyandb123456'; //赋权
说明:Mysql为了安全性,在默认情况下用户只允许在本地登录,可是在有此情况下,还是需要使用用户进行远程连接,因此为了使其可以远程需要进行赋权
#flush privileges; //刷新权限
#exit //退出mysql
3 验证mysql登录级目录
# mysql -uroot -p //登录mysql
Enter password:shiyandb123456
show databases;
看到如下反馈信息,则说明创建成功
mysql> show databases; //显示数据库名称
显示系统里已有的数据库。
退出mysql
# exit
4 安装hive
1 解压安装包
# cd /opt //跳转到opt目录下
# tar vxf hive.tar.gz //解压hive压缩文件
2 添加环境变量
# vi /etc/profile //编辑etc目录下的profile文件
添加以下内容:
export HIVE_HOME=/opt/hive
在export PATH最后面添加:$HIVE_HOME/bin
# source /etc/profile //使环境变量生效
5 修改hive-env.sh和hive-site.xml
修改hive-env.sh
#cd hive/conf/ //进入hive的conf目录
#cp hive-env.sh.template hive-env.sh //重新命名
#vi hive-env.sh //vi是进入文件的编辑命令
指定hadoop安装目录
修改hadoop的安装目录
HADOOP_HOME=/opt/hadoop
# cd hive/conf/ //进入hive的conf目录
# cp hive-default.xml.template hive-site.xml //重新命名
# vim hive-site.xml //编辑hive-site.xml
提示:配置文件内容较多,可以使用vi中的搜索功能(查找功能:非编辑状态下按斜杠/并输入关键字后回车,按n可选择下一个)
获取主机IP:
主要修改以下参数
<property>
<name>javax.jdo.option.ConnectionURL </name>
<value>jdbc:mysql://主机ip:3306/hive?useSSL=false</value>
</property>
连接mysql的url,MySQL默认的数据通道是不加密的,在一些安全性要求特别高的场景下,我们需要配置MySQL端口为SSL,使得数据通道加密处理,避免敏感信息泄漏和被篡改。
修改前:
修改后:
Mysql的驱动程序
<property>
<name>javax.jdo.option.ConnectionDriverName </name>
<value>com.mysql.jdbc.Driver </value>
</property>
修改前:
修改后:
密码
<property>
<name>javax.jdo.option.ConnectionPassword </name>
<value>shiyandb123456</value>
</property>
修改前:
修改后:
用户名
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>Username to use against metastore database</description>
</property>
修改前:
修改后:
指定HDFS内hive数据临时文件存放目录。启动hive,HDFS即自动创建
<property>
<name>hive.exec.local.scratchdir</name>
<value>/opt/hive/iotmp</value>
<description>Local scratch space for Hive jobs</description>
</property>
将配置值含有“system:java.io.tmpdir”的配置项的值改为“/opt/hive/iotmp”
修改前:
修改后:
6 拷贝mysql-connector-java-5.1.40-bin.jar 到/opt/hive/lib 的lib下面
提示:mysql的JDBC驱动包一定要安装。
#tar -zxvf mysql-connector-java-5.1.40.tar.gz
#cd mysql-connector-java-5.1.40
#cp mysql-connector-java-5.1.40-bin.jar /opt/hive/lib
7 把jline-2.12.jar拷贝到hadoop相应的目录下,替代jline-0.9.94.jar,否则启动会报错
提示:hadoop与hive都会使用这个包,版本不统一启动hive会报错
#cp /opt/hive/lib/jline-2.12.jar /opt/hadoop/share/hadoop/yarn/lib/
#mv/opt/hadoop/share/hadoop/yarn/lib/jline-0.9.94.jar/opt/hadoop/share/hadoop/yarn/lib/jline-0.9.94.jar.bak //给jline包重新命名,没有则不要执行这一步
从上述截图中可以看出无jline-0.9.94.jar,故不需要进行重命名
8 创建hive临时文件夹
# cd /opt/hive //进入hive目录
# mkdir iotmp //创建iotmp目录
初始化hive元数据库,否则 mysql 里面储存 hive 元数据的数据库是空的,无法启动
9 hive启动测试
在hive/bin目录下执行:
# ./schematool -dbType mysql -initSchema //初始化元数据hive,会报错
启动hadoop后(hadoop已启动),执行hive命令
#./hive
测试输入 show database;
hive> show databases;
10 基本语法
1.基本数据类型
hive支持多种不同长度的整型和浮点型数据,支持布尔型,也支持无长度限制的字符串类型。例如:TINYINT、SMALINT、BOOLEAN、FLOAT、DOUBLE、STRING等基本数据类型。这些基本数据类型和其他sql方言一样,都是保留字。
2.集合数据类型
hive中的列支持使用struct、map和array集合数据类型。大多数关系型数据库中不支持这些集合数据类型,因为它们会破坏标准格式。关系型数据库中为实现集合数据类型是由多个表之间建立合适的外键关联来实现。在大数据系统中,使用集合类型的数据的好处在于提高数据的吞吐量,减少寻址次数来提高查询速度。
Hive的表其实就是HDFS的目录,按表名把文件夹分开。
使用集合数据类型创建表实例:
CREATE TABLE STUDENTINFO
(
NAME STRING,
FAVORITE ARRAY,
提示:这个地方的语法,仅仅是测试数据库安装可正常。后面有专门的HQL查询课件。
COURSE MAP<STRING,FLOAT>,
ADDRESS STRUCT<CITY:STRING,STREET:STRING>
);
查询语法:
SELECT S.NAME,S.FAVORITE[0],S.COURSE[“ENGLISH”],S.ADDRESS.CITY FROM STUDENTINFO S;
3.分区表
创建分区表:
create table employee (name string,age int,sex string) partitioned by (city string) row format delimited fields terminated by '\t';
分区表装载数据:
load data local inpath '/data/hive/data/emp.txt' into table employee partition (city='hubei');
退出Hive Shell:
终止Hadoop:
本实验大数据技术平台来自于本人所在高校机器学习实验室
如有侵权,请联系侵删
需要本实验源代码和实验报告的小伙伴请联系QQ:2225872659