一、安装Hive

1.1 下载并解压

下载所需版本的Hive,这里我下载版本为cdh5.15.2。下载地址:http://archive.cloudera.com/cdh5/cdh/5/

# 下载后进行解压
 tar -zxvf hive-1.1.0-cdh5.15.2.tar.gz

1.2 配置环境变量

# vim /etc/profile

添加环境变量:

export HIVE_HOME=/usr/app/hive-1.1.0-cdh5.15.2
export PATH=$HIVE_HOME/bin:$PATH

使得配置的环境变量立即生效:

# source /etc/profile

1.3 修改配置

1. hive-env.sh

进入安装目录下的conf/目录,拷贝Hive的环境配置模板flume-env.sh.template

cp hive-env.sh.template hive-env.sh

修改hive-env.sh,指定Hadoop的安装路径:

HADOOP_HOME=/usr/app/hadoop-2.6.0-cdh5.15.2

2. hive-site.xml

新建hive-site.xml 文件,内容如下,主要是配置存放元数据的MySQL的地址、驱动、用户名和密码等信息:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://hadoop001:3306/hadoop_hive?createDatabaseIfNotExist=true</value>
  </property>

  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
  </property>

  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
  </property>

  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>root</value>
  </property>

</configuration>

1.4 拷贝数据库驱动

将MySQL驱动包拷贝到Hive安装目录的lib目录下, MySQL驱动的下载地址为:https://dev.mysql.com/downloads/connector/j/ , 在本仓库的resources目录下我也上传了一份,有需要的可以自行下载。

1.5 初始化元数据库

  • 当使用的 hive 是1.x版本时,可以不进行初始化操作,Hive会在第一次启动的时候会自动进行初始化,但不会生成所有的元数据信息表,只会初始化必要的一部分,在之后的使用中用到其余表时会自动创建;

  • 当使用的 hive 是2.x版本时,必须手动初始化元数据库。初始化命令:

    # schematool 命令在安装目录的bin目录下,由于上面已经配置过环境变量,在任意位置执行即可
    schematool -dbType mysql -initSchema
    

这里我使用的是CDH的hive-1.1.0-cdh5.15.2.tar.gz,对应Hive 1.1.0 版本,可以跳过这一步。

1.6 启动

由于已经将Hive的bin目录配置到环境变量,直接使用以下命令启动,成功进入交互式命令行后执行show databases命令,无异常则代表搭建成功。

# hive

在Mysql中也能看到Hive创建的库和存放元数据信息的表

二、HiveServer2/beeline

Hive内置了HiveServer和HiveServer2服务,两者都允许客户端使用多种编程语言进行连接,但是HiveServer不能处理多个客户端的并发请求,因此产生了HiveServer2。HiveServer2(HS2)允许远程客户端可以使用各种编程语言向Hive提交请求并检索结果,支持多客户端并发访问和身份验证。HS2是由多个服务组成的单个进程,其包括基于Thrift的Hive服务(TCP或HTTP)和用于Web UI的Jetty Web服务。

HiveServer2拥有自己的CLI工具——Beeline。Beeline是一个基于SQLLine的JDBC客户端。由于目前HiveServer2是Hive开发维护的重点,所以官方更加推荐使用Beeline而不是Hive CLI。以下主要讲解Beeline的配置方式。

2.1 修改Hadoop配置

修改 hadoop 集群的 core-site.xml 配置文件,增加如下配置,指定hadoop的root用户可以代理本机上所有的用户。

<property>
 <name>hadoop.proxyuser.root.hosts</name>
 <value>*</value>
</property>
<property>
 <name>hadoop.proxyuser.root.groups</name>
 <value>*</value>
</property>

之所以要配置这一步,是因为hadoop 2.0以后引入了安全伪装机制,使得hadoop不允许上层系统(如hive)直接将实际用户传递到hadoop层,而应该将实际用户传递给一个超级代理,由该代理在hadoop上执行操作,以避免任意客户端随意操作hadoop。如果不配置这一步,在之后的连接中可能会抛出AuthorizationException异常。

关于Hadoop的用户代理机制,可以参考:hadoop的用户代理机制Superusers Acting On Behalf Of Other Users

2.2 启动hiveserver2

由于上面已经配置过环境变量,这里直接启动即可:

# nohup hiveserver2 &

2.3 使用beeline

可以使用以下命令进入beeline交互式命令行,出现Connected则代表连接成功。

# beeline -u jdbc:hive2://hadoop001:10000 -n root

Hive学习之路(二)—— Linux环境下Hive的安装部署的更多相关文章

  1. Linux环境下Python的安装过程

    Linux环境下Python的安装过程 前言 一般情况下,Linux都会预装 Python了,但是这个预装的Python版本一般都非常低,很多 Python的新特性都没有,必须重新安装新一点的版本,从 ...

  2. Linux环境下NodeJS的安装配置(HelloWorld)

    Linux环境下NodeJS的安装配置(HelloWorld) 最简单的环境安装,测试helloworld.给初学者!! 安装脚本,请仔细阅读逐行执行: #!/bin/bash #检查是否已经安装 r ...

  3. Linux环境下使用yum安装zip和unzip

    Linux环境下使用yum安装zip和unzip. yum install zip yum install unzip

  4. PCL库在Linux环境下的编译安装

    PCL库在Linux环境下的编译安装 PCL库的源码库:https://github.com/PointCloudLibrary/pcl 下载完了之后解压下来 编译库的几个步骤 mkdir build ...

  5. 在ConoHa上Centos7环境下源码安装部署LNMP

    本文记录了从源码,在Centos 7上手动部署LNMP环境的过程,为了方便以后对nginx和mariadb进行升级,这里采用yum的方式进行安装. 1.建立运行网站和数据库的用户和组 groupadd ...

  6. Linux环境下卸载、安装及配置MySQL5.1

    Linux环境下卸载原有MySQL5.1数据库,并重新安装MySQL数据库的示例记录. 一.卸载MySQL 查看主机中是否安装了MySQL数据库: [root@RD-viPORTAL- ~]# rpm ...

  7. Linux环境下在Tomcat上部署JavaWeb工程

    本文讲解如何将我们已经编译好的JavaWeb工程在Linux环境下的Tomcat上进行部署,总体上的思路是和Windows下JavaWeb项目部署到tomcat差不多,具体步骤和命令如下. 注:部署之 ...

  8. Linux环境下MySQL5.7安装记录

    参考文档 <Installing MySQL on Unix/Linux Using Generic Binaries> https://dev.mysql.com/doc/refman/ ...

  9. Linux环境下:vmware安装Windows报错误-缺少所需的CD/DVD驱动器设备驱动程序

    解决方法:将硬盘格式从SCSI改为IDE. 方法如下: 右键点击你新建的虚拟机名,点击最下面的setting,看到左侧第二行是hard disk 了么,你那里肯定是SCSI的,选中它,点最下面的rem ...

随机推荐

  1. 在动态THML语句中调用JS函数传递带空格参数的问题

    刚刚遇到一个问题,调用js函数的参数里带空格,造成调用失败的问题.   部分代码如下: html+="<div><a href=javascript:confirm(&qu ...

  2. arcserver开发小结(二)

    一.关于服务器上下文 1,服务器上下文(ServerContext)本质上是一个GIS服务器上的进程,它是服务器端编程的起点. 2,只有本地资源才能得到服务器上下文,通常得到服务器上下文的主线是: M ...

  3. Notepad++ 自定义关键字

    Notepad++是一款輕便好用的編輯器,但可能有些語言的關鍵字不全,比方SQL中,默認關鍵字沒有Merge. 怎样給Notepad++中的語言添加關鍵字,而不是大動干戈自定義一個語言? 步驟: Se ...

  4. mysql/Java服务端对emoji的支持 专题

    关于utf8不支持emoji是因为emoji是用4个字节存储的字符,而mysql的utf8只能存储1-3个字节的字符.那就存不了呗 需要更改的地方:(1)Mysql服务器client,mysql,my ...

  5. Python 推断素数

    a = raw_input() #输入数字 a = int(a) #铸造成int b=True #的标记 for i in range(2,a): #从2开始循环本身 if a%i==0: #除了自己 ...

  6. 使用lead分析功能相似的结构9*9乘法口诀功能

    今天兄弟们的帮助,数据库,具有数据如下面的表: no  name 1    a 2    b 3    c 4    d 怎样用一个sql显演示样例如以下结果: ab ac ad bc bd cd 对 ...

  7. VC++中的C运行时库浅析(控制台程序默认使用单线程的静态链接库,而MFC中的CFile类已暗藏了多线程)

    1.概论 运行时库是程序在运行时所需要的库文件,通常运行时库是以LIB或DLL形式提供的.C运行时库诞生于20世纪70年代,当时的程序世界还很单纯,应用程序都是单线程的,多任务或多线程机制在此时还属于 ...

  8. Vmware 占用宿主机硬盘空间只增不减

    问题: vmware 占用硬盘空间只增大不减少.即使你删除虚拟机系统里面的文件,占用宿主机的硬盘空间也不释放.用了一段时间后空间不够了. 解决办法: 方法一: 把一部分*sxxx.vmdk文件剪切到其 ...

  9. jquery好友面板切换

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  10. Android中对sqlite加密--SQLCipher

    原文:Android中对sqlite加密--SQLCipher android中有些时候会将一些隐私数据存放在sqlite数据库中,在root过的手机中通过RE就能够轻松的打开并查看数据库所有内容,所 ...