Hadoop入门进阶课程8–Hive介绍和安装部署详解大数据
【注】该系列所使用到安装包、测试数据和代码均可在百度网盘下载,具体地址为 http://pan.baidu.com/s/10PnDs,下载该PDF文件
1、搭建环境部署节点操作系统为CentOS,防火墙和SElinux禁用,创建了一个shiyanlou用户并在系统根目录下创建/app目录,用于存放Hadoop等组件运行包。因为该目录用于安装hadoop等组件程序,用户对shiyanlou必须赋予rwx权限(一般做法是root用户在根目录下创建/app目录,并修改该目录拥有者为shiyanlou(chown –R shiyanlou:shiyanlou /app)。
Hadoop搭建环境:
l 虚拟机操作系统: CentOS6.6 64位,单核,1G内存
l JDK:1.7.0_55 64位
l Hadoop:1.1.2
2、Hive介绍Hive是Facebook开发的构建于Hadoop集群之上的数据仓库应用,它提供了类似于SQL语法的HQL语句作为数据访问接口,这使得普通分析人员的应用Hadoop的学习曲线变小,Hive有如下特性:
lHive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并使用sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析;
lHive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 Mapper 和 Reducer 来处理内建的Mapper 和Reducer 无法完成的复杂的分析工作。
2.1 Hive与关系数据库的区别使用Hive的命令行接口很像操作关系数据库,但是Hive和关系数据库还是有很大的不同, Hive与关系数据库的区别具体如下:
1. Hive和关系数据库存储文件的系统不同,Hive使用的是Hadoop的HDFS(Hadoop的分布式文件系统),关系数据库则是服务器本地的文件系统;
2. Hive使用的计算模型是Mapreduce,而关系数据库则是自身的计算模型;
3.关系数据库都是为实时查询的业务进行设计的,而Hive则是为海量数据做数据挖掘设计的,实时性很差;实时性的区别导致Hive的应用场景和关系数据库有很大的不同;
4. Hive很容易扩展自己的存储能力和计算能力,这个是继承Hadoop的,而关系数据库在这个方面要比数据库差很多。
2.2 Hive架构由上图可知,Hadoop的mapreduce是Hive架构的根基。Hive架构包括如下组件:CLI(command line interface)、JDBC/ODBC、Thrift Server、WEB GUI、metastore和Driver(Complier、Optimizer和Executor),这些组件分为两大类:服务端组件和客户端组件。
服务端组件:
lDriver组件:该组件包括Complier、Optimizer和Executor,它的作用是将HiveQL(类SQL)语句进行解析、编译优化,生成执行计划,然后调用底层的mapreduce计算框架;
lMetastore组件:元数据服务组件,这个组件存储Hive的元数据,Hive的元数据存储在关系数据库里,Hive支持的关系数据库有derby和mysql。元数据对于Hive十分重要,因此Hive支持把metastore服务独立出来,安装到远程的服务器集群里,从而解耦Hive服务和metastore服务,保证Hive运行的健壮性;
lThrift服务:thrift是facebook开发的一个软件框架,它用来进行可扩展且跨语言的服务的开发,Hive集成了该服务,能让不同的编程语言调用hive的接口。
客户端组件:
lCLI:command line interface,命令行接口。
lThrift客户端:上面的架构图里没有写上Thrift客户端,但是Hive架构的许多客户端接口是建立在thrift客户端之上,包括JDBC和ODBC接口。
lWEBGUI:Hive客户端提供了一种通过网页的方式访问hive所提供的服务。这个接口对应Hive的hwi组件(hive web interface),使用前要启动hwi服务。
3、搭建Hive环境 3.1 安装MySql数据库 3.1.1 下载mysql安装文件
下载地址:http://dev.mysql.com/downloads/mysql/#downloads,使用系统为CentOS选择 Red Hat Enterprise Linux/Oracle系列,也可以在/home/shiyanlou/install-pack目录中找到这些安装包:
操作系统为64位,选择对应安装包进行下载:
下载在本地目录如下图:
使用命令查看是否已经安装过mysql:
sudo rpm -qa | grep -i mysql
可以看到如下图的所示:
说明之前安装了mysql,可以参考4.1进行卸载旧的mysql。如果以前没有安装mysql则进入安装文件的目录,安装mysql服务端
cd /home/shiyanlou/install-pack
sudo rpm -ivh MySQL-server-5.6.21-1.el6.x86_64.rpm
出现异常,通过分析缺少libaio依赖包,使用如下命令进行安装:
sudo yum install libaio
再次安装mysql,并安装mysql客户端、mysql-devel
sudo rpm -ivh MySQL-server-5.6.21-1.el6.x86_64.rpm
sudo rpm -ivh MySQL-client-5.6.21-1.el6.x86_64.rpm
sudo rpm -ivh MySQL-devel-5.6.21-1.el6.x86_64.rpm
通过下面查看mysql服务状态:
sudo service mysql status
如果mysql没有启动,通过如下命令进行启动:
sudo service mysql start
在CentOS6.5操作系统使用如下命令给mysql设置root密码时,出现如下错误:
/usr/bin/mysqladmin -u root password root
/usr/bin/mysqladmin: connect to server at localhost failed
error: Access denied for user root @ localhost (using password: NO)
可以进入安全模式进行设置root密码
(1) 停止mysql服务
使用如下命令停止mysql服务:
sudo service mysql stop
sudo service mysql status
(2) 跳过验证启动mysql
使用如下命令验证启动mysql,由于 结尾是后台运行进程,运行该命令可以再打开命令窗口或者Ctr+C继续进行下步操作:
sudo mysqld_safe skip-grant-tables
sudo service mysql status
(3) 跳过验证启动MySQL
验证mysql服务已经在后台运行后,执行如下语句,其中后面三条命令是在mysql语句:
mysql -u root
mysql use mysql;
mysql update user set password = password( root ) where user = root
mysql flush privileges;
(4) 跳过验证启动MySQL
重启mysql服务并查看状态
sudo service mysql restart
sudo service mysql status
进入mysql命令行,创建hive用户并赋予所有权限:
mysql -uroot -proot
mysql set password=password( root );
mysql create user hive identified by hive
mysql grant all on *.* TO hive @ % identified by hive with grant option;
mysql grant all on *.* TO hive @ localhost identified by hive with grant option;
mysql flush privileges;
(注意:如果是root第一次登录数据库,需要重新设置一下密码,所报异常信息如下:ERROR 1820 (HY000): You must SET PASSWORD before executing this statement)
3.1.6 创建hive数据库使用hive用户登录,创建hive数据库:
mysql -uhive -phive -h hadoop
mysql create database hive;
mysql show databases;
可以到Apache基金hive官网http://hive.apache.org/downloads.html,选择镜像下载地址:http://mirrors.cnnic.cn/apache/hive/下载一个稳定版本,如下图所示:
也可以在/home/shiyanlou/install-pack目录中找到该安装包,解压该安装包并把该安装包复制到/app目录中
cd /home/shiyanlou/install-pack
tar -xzf hive-0.12.0-bin.tar.gz
mv hive-0.12.0-bin /app/hive-0.12.0
到mysql官网进入下载页面:http://dev.mysql.com/downloads/connector/j/ ,选择所需要的版本进行下载,这里下载的zip格式的文件
也可以在/home/shiyanlou/install-pack目录中找到该安装包,解压该安装包并把该安装包复制到/app/lib目录中
cd /home/shiyanlou/install-pack
cp mysql-connector-java-5.1.22-bin.jar /app/hive-0.12.0/lib
使用如下命令打开/etc/profile文件:
sudo vi /etc/profile
设置如下参数:
export HIVE_HOME=/app/hive-0.12.0
export PATH=$PATH:$HIVE_HOME/bin
export CLASSPATH=$CLASSPATH:$HIVE_HOME/bin
使配置文件生效:
source /etc/profile
echo $PATH
3.2.4 设置hive-env.sh配置文件进入hive-0.12.0/conf目录,复制hive-env.sh.templaete为hive-env.sh:
cd /app/hive-0.12.0/conf
cp hive-env.sh.template hive-env.sh
sudo vi hive-env.sh
分别设置HADOOP_HOME和HIVE_CONF_DIR两个值:
# Set HADOOP_HOME to point to a specific hadoop install directory
export HADOOP_HOME=/app/hadoop-1.1.2
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/app/hive-0.12.0/conf
复制hive-default.xml.templaete为hive-site.xml
cd /app/hive-0.12.0/conf
cp hive-default.xml.template hive-site.xml
sudo vi hive-site.xml
(1) 加入配置项
默认metastore在本地,添加配置改为非本地
property
name hive.metastore.local /name
value false /value
/property
(2) 修改配置项
hive默认为derby数据库,需要把相关信息调整为mysql数据库
property
name hive.metastore.uris /name
value thrift://hadoop:9083 /value
description Thrift URI for the remote metastore. /description
/property
property
name javax.jdo.option.ConnectionURL /name
value jdbc:mysql://hadoop: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 hive /value
description username to use against metastore database /description
/property
property
name javax.jdo.option.ConnectionPassword /name
value hive /value
description password to use against metastore database /description
/property
(3) 订正错误项
在配置文件2000行左右配置项hive.server2.thrift.sasl.qop原来为 value auth /auth ,按照如下进行修改:
property
name hive.server2.thrift.sasl.qop /name
value auth /value
des ..
/property
并把hive.metastore.schema.verification配置项值修改为false
property
name hive.metastore.schema.verification /name
value false /value
desc .
/property
在使用hive之前需要启动metastore和hiveserver服务,通过如下命令启用:
hive service metastore
hive service hiveserver
启动用通过jps命令可以看到两个进行运行在后台
登录hive,在hive创建表并查看该表,命令如下:
hive
hive create table test(a string, b int);
hive show tables;
hive desc test;
登录mysql,在TBLS表中查看新增test表:
mysql -uhive -phive
mysql use hive;
mysql select TBL_ID, CREATE_TIME, DB_ID, OWNER, TBL_NAME,TBL_TYPE from TBLS;
(1) 查找以前是否安装有mysql
使用命令查看是否已经安装过mysql:
sudo rpm -qa | grep -i mysql
可以看到如下图的所示:
说明之前安装了:
MySQL-client-5.6.21-1.el6.x86_64
MySQL-server-5.6.21-1.el6.x86_64
MySQL-devel-5.6.21-1.el6.x86_64
如果没有结果,可以进行跳到3.1.3步骤的mysql数据库安装
(2) 停止mysql服务、删除之前安装的mysql
停止mysql服务、删除之前安装的mysql删除命令:rpm -ev –nodeps 包名
sudo rpm -ev MySQL-server-5.6.21-1.el6.x86_64
sudo rpm -ev MySQL-devel-5.6.21-1.el6.x86_64
sudo rpm -ev MySQL-client-5.6.21-1.el6.x86_64
如果存在CentOS自带mysql-libs-5.6.21-1.el6.x86_64使用下面的命令卸载即可
sudo rpm -ev nodeps mysql-libs-5.6.21-1.el6.x86_64
(3) 查找之前老版本mysql的目录并且删除老版本mysql的文件和库
sudo find / -name mysql
删除对应的mysql目录
sudo rm -rf /usr/lib64/mysql
sudo rm -rf /var/lib/mysql
(4) 再次查找机器是否安装mysql
sudo rpm -qa | grep -i mysql
无结果,说明已经卸载彻底、接下来直接安装mysql即可
启动hive时,出现CommandNeedRetryException异常,具体信息如下:
Exception in thread main java.lang.NoClassDefFoundError:org/apache/hadoop/hive/ql/CommandNeedRetryException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:270)
at org.apache.hadoop.util.RunJar.main(RunJar.java:149)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.ql.CommandNeedRetryException
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
由于以前使用hadoop时,修改hadoop-env.sh的HADOOP_CLASSPATH配置项,由以前的:
export HADOOP_CLASSPATH=/app/hadoop-1.1.2/myclass
修改为:
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/app/hadoop-1.1.2/myclass
启动hive后,使用Hql出现异常,需要启动metastore和hiveserver
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
在使用hive之前需要启动metastore和hiveserver服务,通过如下命令启用:
hive service metastore
hive service hiveserver
启动用通过jps命令可以看到两个进行运行在后台
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/8574.html
分布式文件系统,分布式数据库区块链并行处理(MPP)数据库,数据挖掘开源大数据平台数据中台数据分析数据开发数据治理数据湖数据采集相关文章
- ubuntu系统下安装gcc
- Centos7安装hadoop
- 【图文教程】Centos 7下安装Hadoop-管杀管埋的
- 百度飞桨:ERNIE 3.0 、通用信息抽取 UIE、paddleNLP的安装使用[一]
- Adobe Photoshop 2022软件安装教程--所有PS软件全版本!
- 大数据必知必会:Hadoop(2)伪分布式安装
- 大数据必知必会:Hadoop(3)集群环境安装
- Hadoop 2.8集群安装及配置记录详解大数据
- Hadoop综合练习第五节–在Eclipse中安装Hadoop插件及测试(Linux操作系统)详解大数据
- Hadoop入门进阶课程9–Mahout介绍、安装与应用案例详解大数据
- Hadoop入门进阶课程12–Flume介绍、安装与应用案例详解大数据
- hadoop学习之hadoop2.8.0完全分布式集群安装详解大数据
- Hadoop 2.2.0部署安装(笔记,单机安装)详解大数据
- Debian下安装配置 Hadoop 3.1.3 集群
- 借助U盘安装Linux 5一步搞定(u盘安装linux5)
- Linux系统下安装配置Hadoop(linux下安装hadoop)
- 如何在 Linux 系统中判断安装、使用了多少内存
- Hadoop入门扫盲:hadoop发行版介绍与选择
- Linux系统上安装Hadoop环境讲解(linux安装hadoop)
- 利用Hadoop搭建MySQL数据库存储系统(hadoop和mysql)
- 轻松学习:Linux 如何安装锐捷网络认证系统(linux安装锐捷)
- MySQL驱动程序快速安装指南(mysql 驱动 安装)
- Centos中安装多个mysql数据的配置实例