1 什么是HIVE
1)Hive 由 Facebook 实现并开源
2)是基于 Hadoop 的一个数据仓库工具
3)可以将结构化的数据映射为一张数据库表
4)并提供 HQL(Hive SQL)查询功能
5)底层数据是存储在 HDFS 上
6)Hive的本质是将 SQL 语句转换为 MapReduce 任务运行
7)使不熟悉 MapReduce 的用户很方便地利用 HQL 处理和计算 HDFS 上的结构化的数据,适用于离线的批量数据计算。
2 为什么要用Hive
直接使用 MapReduce 所面临的问题:
1)人员学习成本太高
2)项目周期要求太短
3)MapReduce实现复杂查询逻辑开发难度太大
为什么要使用 Hive:
1)更友好的接口:操作接口采用类 SQL 的语法,提供快速开发的能力
2)更低的学习成本:避免了写 MapReduce,减少开发人员的学习成本
3)更好的扩展性:可自由扩展集群规模而无需重启服务,还支持用户自定义函数
3 Hive 特点
优点:
1)可扩展性,横向扩展,Hive 可以自由的扩展集群的规模,一般情况下不需要重启服务。
2)延展性,Hive 支持自定义函数,用户可以根据自己的需求来实现自己的函数
3)良好的容错性,可以保障即使有节点出现问题,SQL 语句仍可完成执行
缺点:
1)Hive 的查询延时很严重
2)Hive 不支持事务
4 Hive的安装
环境准备:
192.168.0.38 node1 hive mysql namenode resourcemanager
192.168.0.39 node2 datanode nodemanager
192.168.0.40 node2 datanode nodemanager
192.168.0.41 node3 datanode nodemanager
4.1 安装mysql
1)上传包解压
tar -xvf MySQL-5.6.26-1.linux_glibc2.5.x86_64.rpm-bundle.tar
2)只装server和client删除其它没用的rpm
3)安装server
rpm -ivh MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm
#如果冲突,卸载
rpm -e mariadb-libs-1:5.5.60-1.el7_5.x86_64 --nodeps
#卸载后重新安装
rpm -ivh MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm
4)安装客户端
rpm -ivh MySQL-client-5.6.26-1.linux_glibc2.5.x86_64.rpm
5)记住随机密码
cat /root/.mysql_secret
q2IoRdyJAvHnp8fL
6)启动mysql
#命令
service mysql start
7)修改密码
#命令,用上文密码登陆
/usr/bin/mysql_secure_installation
#几个重要的选择
#是否禁用远程登录,除此之外可以全y
Disallow root login remotely? [Y/n] n
#是否重新加载权限表
Reload privilege tables now? [Y/n] y
8)设置权限
#登录
mysql -uroot -p123456
#设置
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
4.2 安装hive
1)上传包解压
#解压
tar -zxvf apache-hive-1.2.1-bin.tar.gz
#改名
mv apache-hive-1.2.1-bin hive
2)修改配置文件
cd /usr/local/hive/conf
vim hive-site.xml
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.0.38:3306/hive?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>
</configuration>
3)放入jdbc驱动包
cd /usr/local/hive/lib
4)启动前需要HDFS集群环境和HADOOP_HOME
5)启动hive
cd /usr/local/hive/bin
./hive