Centos搭建Hive
Centos搭建Hive
一、Hive简介
Hive是在HDFS之上的架构,Hive中含有其自身的组件,解释器、编译器、执行器、优化器。解释器用于对脚本进行解释,编译器是对高级语言代码进行编译,执行器是对java代码的执行,优化器是在执行过程中进行优化。这里的代码就是Hadoop中的MapReduce,这里的MapReduce通过Hive往HDFS上执行、分析、查询数据。

上图展示hql的执行过程,一个hql脚本首先到hive的解释器,转化为MapReduce(当然例如“select * from table_name;”这样的语句不用转化成MapReduce),解释器是用于解释脚本的,MapReduce是由脚本生成的;然后编译器再对MapReduce程序进行编译;再然后执行器对代码的执行以及优化器在执行过程优化。可见,Hive并没有更改数据的存储介质,数据仍然在HDFS上。Hive只是通过MapReduce对数据进行查询和分析,这时MapReduce不用进行解释、编译、优化,hive会帮助完成。这时写一个MapReduce程序就变成了写一个hql语句/脚本(或者说类似sql语句/脚本)。
Hive的本质不是一个数据库,更不是一个服务,它不需要端口,没有监听客户端。正因为hive不是一个服务,所以不需要考虑HA和分布式方面的问题,hive实际上就是一种工具,是一种把sql语句转化成MapReduce,然后再放到hadoop去执行MapReduce的一种工具。可以将hive理解为hadoop的一个客户端,因为是hive去连接hdfs,是hive去提交MapReduce程序到hadoop中的ResourceManager主节点。
hive也有其不足之处。虽然hive可以替代一部分MapReduce,但只能做统计查询,以及一些简单的统计分析,要想做数据挖掘仍需写MapReduce。因为hive的特点是基于hql脚本进行操作的,它非常接近关系型数据库的sql语句,所以它的数据结构一定是要有关系的那种才适合统计分析,这种统计分析有局限性。
二、安装Hive
2.1hive下载
2.2上传解压
将安装包上传至服务器:
rz apach-hive-xxxx.tar.gz
解压:
tar -zxvf apach-hive-xxx.tar.gz
重命名hive:
mv apach-hive-xxx hive
2.3配置hive相关的环境变量
vi ~/.bashrc
export HIVE_HOME=/usr/local/hive
export PATH=$HIVE_HOME/bin
重启使配置生效:
source ~/.bashrc
三、Mysql
在Centos上需要安装Mysql服务,通过网上其他资源,参考安装mysql服务。
CentOS7下使用YUM安装MySQL5.6
yum install -y mysql-server
//启动mysql服务
service mysqld start
//开机启动
chkconfig mysqld on
3.1安装mysql connector
yum install -y mysql-connector-java
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.31.tar.gz
tar zxf mysql-connector-java-5.1.31.tar.gz
3.2 将mysqld上创建 connector 拷贝到hive的lib包中
cp mysql-connector-java-5.1.31/mysql-connector-java-5.1.31-bin.jar /home/hadoop/hive/lib/
3.3在mysql上创建hive元数据库,并对hive进行授权
create user 'hive'@'localhost' identified by 'hive'; (创建hive用户)
grant all privileges on *.* to 'hive'@'localhost' with grant option;(赋予权限)
flush privileges;(刷新权限)
或:
create database if not existshive_metadata;
grant all privileges onhive_metadata.* to 'hive'@'%' identified by 'hive';
grant all privileges onhive_metadata.* to 'hive'@'localhost' identified by 'hive';
grant all privileges onhive_metadata.* to 'hive'@'spark1' identified by 'hive';
flush privileges;
use hive_metadata;
四、配置hive-site.xml
vi /hive/conf/hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<configuration>
<!--Hive的元数据库,这是连接master.hadoop:3306端口的hive数据库,如果库不存在就可以创建-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master.hadoop:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<!--连接元数据的驱动名-->
<property>
<name>javac.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!--数据库的用户名-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<!--数据库的密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
</property>
<!--表示数据在hdfs中的存储位置-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://mycluster/user/hive/warehouse</value>
</property>
<!--动态分区的模式,默认strict,表示必须指定至少一个分区为静态分区,nonstrict模式表示允许所有的分区字段都可以使用动态分区。-->
<property>
<name>hive.exec.dynamic.partition.mode</name>
<value>nonstrict</value>
</property>
<!--默认情况下,HiveServer2以提交查询的用户执行查询(true),如果hive.server2.enable.doAs设置为false,查询将以运行hiveserver2进程的用户运行。-->
<property>
<name>hive.server2.enable.doAs</name>
<value>false</value>
</property>
<!-- hive.metastore.schema.verification值为false即可解决“Caused by: MetaException(message:Version information not found in metastore.)”-->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
</configuration>
五、配置hive-env.sh和hive-config.sh
mv hive-env.sh.template hive-env.sh
#若无hive-env.sh文件,则将hive-env.sh.template 改名为hive-env.sh
vi /usr/local/hive/bin/hive-config.sh
#增加环境变量
export JAVA_HOME=/usr/java/latest
export HIVE_HOME=/usr/local/hive
exportHADOOP_HOME=/usr/local/hadoop
六、验证hive
直接输入hive命令,即可进入hive命令行。
Centos搭建Hive的更多相关文章
- Centos搭建mysql/Hadoop/Hive/Hbase/Sqoop/Pig
目录: 准备工作 Centos安装 mysql Centos安装Hadoop Centos安装hive JDBC远程连接Hive Hbase和hive整合 Centos安装Hbase 准备工作: 配置 ...
- Linux 下搭建 Hive 环境
Linux 下搭建 Hive 环境 作者:Grey 原文地址: 博客园:Linux 下搭建 Hive 环境 CSDN:Linux 下搭建 Hive 环境 前置工作 首先,需要先完成 Linux 下搭建 ...
- 基于Ubuntu Hadoop的群集搭建Hive
Hive是Hadoop生态中的一个重要组成部分,主要用于数据仓库.前面的文章中我们已经搭建好了Hadoop的群集,下面我们在这个群集上再搭建Hive的群集. 1.安装MySQL 1.1安装MySQL ...
- CentOS 搭建LNMP服务器和LAMP服务器
CentOS 搭建LNMP服务器 方法一:yum安装 1.更新YUM源 wget http://www.atomicorp.com/installers/atomic #下载atomic自动更新Y ...
- 在CentOS搭建Git服务器 转
在CentOS搭建Git服务器 来自 :http://www.jianshu.com/p/69ea5ded3ede 前言 我们可以GitHub发布一些开源代码的公共仓库,但对于私密仓库就需要收费了.公 ...
- 基于CDH 5.9.1 搭建 Hive on Spark 及相关配置和调优
Hive默认使用的计算框架是MapReduce,在我们使用Hive的时候通过写SQL语句,Hive会自动将SQL语句转化成MapReduce作业去执行,但是MapReduce的执行速度远差与Spark ...
- [记录]CentOS搭建SVN服务器(主从同步)
CentOS搭建SVN服务器(主从同步)1.安装步骤如下: 1)安装: #yum install subversion 2)查看安装位置: #rpm -ql subversion 3)查看版本: #/ ...
- CentOS搭建Git服务器及权限管理
声明:本教程,仅作为配置的记录,细节不展开,需要您有一点linux的命令基础,仅作为配置参考. 1. 系统环境 系统: Linux:CentOS 7.2 64位 由于CentOS已经内置了OpenSS ...
- ubuntu18.04搭建hive
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行. 其优点是学习成本低,可以通过 ...
随机推荐
- Jquery真的不难~第一回 编程基础知识
Jquery真的不难~第一回 编程基础知识 回到目录 前言 说Jquery之前,先来学习一下Javascript(以后简称为JS)语言中的基础知识问题,其时对于每种编程语言来说基础知识都是大同小异 ...
- 对象、对象监视器、同步队列、执行线程关系(synchronized的实现细节或原理)
synchronized在使用的时候底层细节你了解吗,相信很多同学对细节很少关注:比如竞争失败了的线程怎么安置,每个对象的监视器,线程执行synchronized时,其实是获取对象的监视器才能进入同步 ...
- 十八般武艺玩转GaussDB(DWS)性能调优:SQL改写
摘要:本文将系统介绍在GaussDB(DWS)系统中影响性能的坏味道SQL及SQL模式,帮助大家能够从原理层面尽快识别这些坏味道SQL,在调优过程中及时发现问题,进行整改. 数据库的应用中,充斥着坏味 ...
- exchangeNetwork
泛洪(Flooding) 转发(Forwarding) 丢弃(Discarding) 交换机中有一个MAC地址表,里面存放了MAC地址与交换机的映射关系.MAC地址表也称为CAM(Content Ad ...
- Python在项目外更改项目内引用
前言 目前有一个奇葩的需求, 将某个开源项目整合进自己的项目里去调度, 还需要在每次启动这个开源项目时, 加载不同的配置文件进去, 问题是配置文件并不是一个 conf 或者是其他的什么, 而是以 .p ...
- PMP知识领域
· 十大知识领域 整合-项目整合管理 识别.定义.组合.统一和协调个项目管理过程组的各种过程和活动而展开的活动与过程. 整合:统一.合并.沟通和简历联系:贯穿项目始终 七个过程组 一.制定项目章程(启 ...
- Linux 服务器安装node环境
Linux 装 node 环境 我的是 CentOS 查看服务器是多少位系统 getconf LONG_BIT 下载地址, 下载对应的版本: http://nodejs.cn/download/ 我这 ...
- ORA-32004解决办法
ORA-32004 解释是: 产生问题的原因是一个过时的参数,这个参数是早在8i,9i中使用的,在11g中已经废掉了 这个参数就是pfile中的*.sql_trace 用spfile 生成一个pfil ...
- CWE 4.3:强化你的数据自我保护能力
摘要:如何通过软件自动的检查法规中涉及的数据保护, 新版的CWE 4.3 给出了一个解决途径. 1. 按照惯例,先说故事 用12月初在深圳参加的"全球C++及系统软件技术大会"里C ...
- nodejs中使用worker_threads来创建新的线程
目录 简介 worker_threads isMainThread MessageChannel parentPort和MessagePort markAsUntransferable SHARE_E ...