首页 / MYSQL / Hive ,MySQL安装与部署
Hive ,MySQL安装与部署
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Hive ,MySQL安装与部署,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含10163字,纯文字阅读大概需要15分钟。
内容图文
![Hive ,MySQL安装与部署](/upload/InfoBanner/zyjiaocheng/891/0ca4c532a89046e6ae67652ae5d8cf07.jpg)
Hive基本概念
1.什么是Hive
Hive:是由Facebook 开源用于解决海量结构化日志的数据统计。
Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据映射为一张表,并提供类 SQL 查询功能。
本质是:将 HQL/SQL 转化为 MapReduce 程序。
Hive 处理的数据储存在 HDFS。
Hive 分析数据的底层实现是 MapReduce。
执行程序运行在 yarn 上。
2.Hive 的优缺点
1.优点
操作接口采用类 SQL 语法,提供快速开发的能力(简单、易上手)。
避免了去写 MapReduce,减少了开发人员的学习成本。
Hive 的执行延迟比较高,因此 Hive 常用于数据分析,对实时性要求不高的场合。
Hive 的优势在于在于处理大数据,对于处理小数据没有优势,因此 Hive 的执行延迟比较高。
Hive 支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。
2.缺点
(1)Hive 的 HQL 表达能力有限
迭代式算法无法表达
数据挖掘方面不擅长
(2)Hive 的效率比较低
Hive 自动生成的 MapReduce 作业,通常情况下不够智能化
Hive 调优比较困难,粒度较粗
Hive 的架构原理
如图中所示,Hive 通过给用户提供 的一系列交互接口,接收用户的指令(SQL),使用自己的 Driver,结合元数据(MetaStore),将这些指令翻译成 MapReduce,提交到 Hadoop 中执行,最后,将返回的结果输出到用户交互接口。
(1)用户接口:client
CLI(hive shell)、JDBC/ODBC(java访问hive)、WEBUI(浏览器访问hive)。
(2)元数据:MetaStore
元数据包括:表名、表所属的数据库(默认是default)、表达拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;
默认储存在自带的derby数据库中(2M,只支持单用户访问),推荐使用MySQL储存MetaStore。
(3)Hadoop
使用 HDFS 进行储存,使用 MapReduce 进行计算。
(4)驱动器:Driver
1.解析器(SQL Parser):将 SQL 字符串转换成抽象语法树 AST,这一步一般都用第三方工具库完成,比如 antlr;对 AST 进行语法分析,比如表是否存在、字段是否存在,SQL语义是否错误。
2.编译器(Physical Plan):将AST编译生成逻辑执行计划。
3.优化器(Query Optimizer):对逻辑执行计划进行优化。
4.执行器(Execution):把逻辑执行计划转换为可以运行的物理计划,对于Hive来说。就是MR/Spark
Hive和数据库比较
由于 Hive 采用了类似 SQL 的查询语言 HQL(Hive Query Language),因此很容易将 Hive 理解为数据库。其实从结构上来看,Hive 和数据库除了拥有类似的查询语言,再无类似之处。本文将从多个方面来阐述 Hive 和数据库的差异。数据库可以用到 Online 的应用中,但是 Hive 是为数据仓库而设计的,清楚这一点,有助于从应用角度理解 Hive 的特性。
1.查询语言
由于SQL被广泛的应用在数据仓库中,因此,专门针对Hive的特性设计了类SQL的查询语言HQL,熟悉SQL开发的开发者可以很方便的使用Hive进行开发。
2.数据储存位置
Hive 是建立在 Hadoop 之上的,所用 Hive 的数据都是储存在 HDFS 中的。而数据库则可以将数据保存在块设备或者本地文件系统中。
3.数据更新
由于 Hive 是针对数据仓库应用设计的,而数据仓库的类容是读多写少的。因此,==Hive 中不支持对数据的改写与添加,所有的数据都是在加载的时候确定好的。==而数据库中的数据通常是需要经常修改,因此可以使用 INSERT INTO …VALUES 添加数据,使用 UPDATE…SET修改数据。
4.索引
Hive 在加载数据的过程中不会对数据进行任何处理,甚至不会对数据进行扫描,因此也没有对数据中的某些Key建立索引,Hive 要访问数据中满足条件的特定值,需要暴力扫描整个数据,因此即便没有索引,对于大量数据的访问,Hive 仍然可以体现出优势。数据库中,通常会针对一个或几个列建立索引,因此对于少量的特定的数据的访问,数据库可以有很高的效率,较低的延迟,由于数据的访问延迟较高,决定了 Hive 不适合做在线数据查询。
5.执行
Hive 大多数据的查询的执行是通过 Hadoop 提供的 MapReduce 来实现的。而数据库通常有自己执行引擎。
6.执行延迟
Hive在查询数据的时候,由于没有索引,需要扫描整个表,因此延迟较高,另外一个导致 Hive 执行延迟高的因素是 MapReduce 框架,本身具有较高的延迟,因此在利用 MapReduce 执行 Hive 查询时,也会有较高的延迟,相对的,数据库的执行延迟较低,当然,这个低是有条件的,即数据规模较小,当数据规模大到超过数据库的处理能力的时候,Hive 的并行计算显然能体现出优势。
7.可扩展性
由于 Hive 是 建立在Hadoop 之上的,因此Hive的可扩展性是和 Hadoop 的可扩展性一致的(世界最大的Hadoop 集群在Yahoo!2009年规模在4000台节点左右)而数据库由于 ACID 语义的严格限制,可扩展性非常有限。目前最先进的并行数据 Oracle 在理论上的执行能力也只有100台左右。
8.数据规模
由于 Hive 建立在集群上并可以利用 MapReduce 进行并行计算,因此可以支持很大规模的数据,对应的,数据库可以支持的数据规模较小。
Hive 安装
Hive 官网地址:http://hive.apache.org/
文档查看地址:https://cwiki.apache.org/confluence/display/Hive/GettingStarted
下载地址:http://archive.apache.org/dist/hive/
百度云:提取码:dpyb
githup地址:https://github.com/apache/hive
Hive 安装部署
Hive 安装及配置
(1)把apache-hive-1.2.1-bin.tar.gz上传到linux的/opt/soft 目录下
(2)解压apache-hive-1.2.1-bin.tar.gz到/opt/module/目录下面
[root@bigdata111 soft]$ tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /opt/module/
(3)修改apache-hive-1.2.1-bin.tar.gz的名称为hive-1.2.1
[root@bigdata111 module]$ mv apache-hive-1.2.1-bin/ hive-1.2.1
(4)修改/opt/module/hive-1.2.1/conf 目录下的 hive-env.sh.template 名称为 hive-env.sh
[root@bigdata111 conf]$ mv hive-env.sh.template hive-env.sh
如果报错
stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
重新下载
(5)配置hive-env.sh文件
(a)配置HADOOP_HOME路径
export HADOOP_HOME=/opt/module/hadoop-2.8.4
(b)配置HIVE_CONF_DIR路径
export HIVE_CONF_DIR=/opt/module/hive-1.2.1/conf
注:Hive的log默认存放在/tmp/itstar/hive.log目录下(当前用户名下)
修改hive的log存放日志到/opt/module/hive-1.2.1/logs
(1)修改conf/hive-log4j.properties.template文件名称为hive-log4j.properties
mv hive-log4j.properties.template hive-log4j.properties
(2)在hive-log4j.properties文件中修改log存放位置
hive.log.dir=/opt/module/hive-1.2.1/logs
Hadoop集群配置
(1)必须启动hdfs和yarn
[root@bigdata111hadoop-2.8.4]$ sbin/start-dfs.sh
[root@bigdata112 hadoop-2.8.4]$ sbin/start-yarn.sh
(2)在HDFS上创建/tmp和/user/hive/warehouse两个目录并修改他们的同组权限可写
[root@bigdata111hadoop-2.8.4]$ bin/hadoop fs -mkdir /tmp
[root@bigdata111hadoop-2.8.4]$ bin/hadoop fs -mkdir -p /user/hive/warehouse
[root@bigdata111hadoop-2.8.4]$ bin/hadoop fs -chmod g+w /tmp
[root@bigdata111hadoop-2.8.4]$ bin/hadoop fs -chmod g+w /user/hive/warehouse
Hive 基本操作
1.启动Hive
bin/hive
(2)查看数据库
hive>show databases;
(3)打开默认数据库
hive>use default;
(4)显示default数据库中的表
hive>show tables;
(5)创建一张表
hive> create table student(id int, name string) ;
(6)显示数据库中有几张表
hive>show tables;
(7)查看表的结构
hive>desc student;
(8)向表中插入数据
hive> insert into student values(1001,“ss1”);
(9)查询表中数据
hive> select * from student;
(10)退出hive
hive> quit;
安装MySQL
1.下载MySQL
官网下载地址:https://dev.mysql.com/downloads/file/?id=471503
百度云:提取码:lydk
2.检测本地是否有mysql已存在的包
rpm -qa | grep mysql
3.检查本地是否有 mariadb 已存在的包
rpm -qa | grep mariadb
4.如果已存在,则使用yum命令卸载
yum -y remove mariadb-libs-5.5.56-2.el7.x86_64
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
5. 创建一个文件夹
mkdir /opt/module/mysql
6.解压 mysql jar包
tar -xvf mysql-5.7.19-1.el7.x86_64.rpm-bundle.tar -C /opt/module/mysql
7.安装 mysql 的server、client、common、libs、libs-compat
rpm -ivh --nodeps mysql-community-server-5.7.19-1.el7.x86_64.rpm
rpm -ivh --nodeps mysql-community-client-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-common-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.19-1.el7.x86_64.rpm
8.查看 mysql 的服务是否启动
systemctl status mysqld
9.启动mysql的服务
systemctl start mysqld
10.再次检查mysql的服务是否启动
systemctl status mysqld
11.查看默认生成的密码
cat /var/log/mysqld.log | grep password
2019-09-10T16:04:42.679033Z 1 [Note] A temporary password is generated for root@localhost: I(Vsc.-iF1.k
12.登录mysql服务
mysql -uroot -p’然后粘贴上密码’
不加引号可能出现如下错误
13.修改mysql密码规则
密码强度 | 格式 |
---|---|
0 or LOW | 长度 |
1 or MEDIUM | 长度、大小写、数字、特殊字符 |
2 or STRONG | 长度、大小写、数字、特殊字符、词典 |
注:以下修改是临时修改
1.1.密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG
mysql> set global validate_password_policy=0;
2.密码至少要包含的小写字母个数和大写字母个数
mysql> set global validate_password_mixed_case_count=0;
3.密码至少要包含的数字个数
mysql> set global validate_password_number_count=3;
4.密码至少要包含的特殊字符数
mysql> set global validate_password_special_char_count=0;**
5.密码最小长度,参数默认为8,
它有最小值的限制,最小值为:validate_password_number_count + 密码至少要包含的数字个数validate_password_special_char_count +特殊字符
(2 * validate_password_mixed_case_count)至少要包含的小写字母个数和大写字母个数
mysql> set global validate_password_length=3;
6.14.修改密码:
alter user root@localhost identified by ‘000000’;
(这两步可以跳过)
mysql> use mysql;
mysql> SHOW VARIABLES LIKE ‘validate_password%’;
修改远程登录权限
如上图所示:这个是可以成功远程链接得配置
大家默认的%的位置是localhost,即意味着只能本机访问
查询当前user表内root的登录权限:
select host,user from mysql.user;
修改权限为所有%:
update mysql.user set host = ‘%’ where user = ‘root’;
刷新缓存:
flush privileges;
然后 quit 退出 mysql 再从新进入
这样即为配置成功
拷贝驱动
上传mysql-connector-java-5.1.27-bin.jar到/opt/module/hive-1.2.1/lib/
百度云:提取码:wnvy
配置Metastore到MySql
在/opt/module/hive-1.2.1/conf目录下创建一个
[root@bigdata111conf]$ touch hive-site.xml
[root@bigdata111conf]$ vi hive-site.xml
根据官方文档配置参数,拷贝数据到hive-site.xml文件中。
https://cwiki.apache.org/confluence/display/Hive/AdminManual+MetastoreAdmin
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://bigdata111:3306/metastore?createDatabaseIfNotExist=true&characterEncoding=utf-8&useSSL=fals</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>000000</value>
<description>password to use against metastore database</description>
</property>
</configuration>
配置完毕后,如果启动hive异常,可以重新启动虚拟机。(重启后,别忘了启动hadoop集群)
在 Hive 的bin目录下执行schematool -dbType mysql -initSchema
内容总结
以上是互联网集市为您收集整理的Hive ,MySQL安装与部署全部内容,希望文章能够帮你解决Hive ,MySQL安装与部署所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。