前言

安装Apache Hive前提是要先安装hadoop集群,并且hive只需要在hadoop的namenode节点集群里安装即可(需要再有的namenode上安装),可以不在datanode节点的机器上安装。还需要说明的是,虽然修改配置文件并不需要把hadoop运行起来,但是本文中用到了hadoop的hdfs命令,在执行这些命令时你必须确保hadoop是正在运行着的,而且启动hive的前提也需要hadoop在正常运行着,所以建议先把hadoop集群启动起来。

有关如何在CentOS7.0上安装hadoop集群请参考:CentOS7.0下Hadoop2.7.3的集群搭建

1.下载Apache Hadoop

下载地址:http://hive.apache.org/downloads.html

点击下图中的链接:

点击下图中的某个下载地址,优先选择国内源:

我下载的上2.1.1版本,如下图所示:

2.安装Apache Hive

2.1.上载和解压缩

#解压
[dtadmin@apollo ~]$ sudo tar -zxvf apache-hive-2.1.1-bin.tar.gz
#把解压好的移到/user/local/下
[dtadmin@apollo ~]$ sudo mv apache-hive-2.1.1-bin /usr/local/hive

2.2.配置环境变量

#编辑/etc/profile,添加hive相关的环境变量配置
[root@apollo dtadmin]# vim /etc/profile
#在文件结尾添加内容如下:
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
#修改完文件后,执行如下命令,让配置生效:
[root@apollo dtadmin]# source /etc/profile

2.3.Hive配置Hadoop HDFS

2.3.1 hive-site.xml配置

进入目录$HIVE_HOME/conf,将hive-default.xml.template文件复制一份并改名为hive-site.xml

#进入hive配置文件目录$HIVE_HOME/conf
[root@apollo hive]# cd $HIVE_HOME/conf
#拷贝并重命名
[root@apollo conf]# cp hive-default.xml.template hive-site.xml

使用hadoop新建hdfs目录,因为在hive-site.xml中有如下配置:

  <property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value><description>location of default database for the warehouse</description></property><property>

执行hadoop命令新建/user/hive/warehouse目录:

#新建目录/user/hive/warehouse
[root@apollo conf]# $HADOOP_HOME/bin/hadoop dfs -mkdir -p /user/hive/warehouse
#给新建的目录赋予读写权限
[hadoop@apollo conf]$ sh $HADOOP_HOME/bin/hdfs dfs -chmod 777 /user/hive/warehouse
#查看修改后的权限
[hadoop@apollo conf]$  sh $HADOOP_HOME/bin/hdfs dfs -ls /user/hive
Found 1 items
drwxrwxrwx   - impala supergroup          0 2017-06-06 01:46 /user/hive/warehouse#运用hadoop命令新建/tmp/hive目录
[hadoop@apollo conf]$ $HADOOP_HOME/bin/hdfs dfs -mkdir -p /tmp/hive
#给目录/tmp/hive赋予读写权限
[hadoop@apollo conf]$ $HADOOP_HOME/bin/hdfs dfs -chmod 777 /tmp/hive
#检查创建好的目录
[hadoop@apollo conf]$ $HADOOP_HOME/bin/hdfs dfs -ls /tmp
Found 1 items
drwxrwxrwx   - hadoop supergroup          0 2017-06-06 05:06 /tmp/hive

2.3.2修改$HIVE_HOME/conf/hive-site.xml中的临时目录

将hive-site.xml文件中的${system:java.io.tmpdir}替换为hive的临时目录,例如我替换为$HIVE_HOME/tmp,该目录如果不存在则要自己手工创建,并且赋予读写权限。

[root@apollo conf]# cd $HIVE_HOME
[root@apollo hive]# mkdir tmp

配置文件hive-site.xml:

  • 将文件中的所有 ${system:java.io.tmpdir}替换成/usr/local/hive/tmp
  • 将文件中所有的${system:user.name}替换为root

2.4安装配置mysql

2.4.1.安装mysql

CentOS7.0安装mysql请参考:CentOS7 rpm包安装mysql5.7

2.4.2. 把mysql的驱动包上传到Hive的lib目录下:

#上传
[dtadmin@apollo ~]$ sudo cp mysql-connector-java-5.1.36.jar $HIVE_HOME/lib
#查看文件是否上传到了$HIVE_HOME/lib目录下
[dtadmin@apollo ~]$ ls -la $HIVE_HOME/lib/ | grep "mysql*"
-r-xr-xr-x  1 root root   972007 Jun  6 07:26 mysql-connector-java-5.1.36.jar

2.4.3修改hive-site.xml数据库相关配置

  • 搜索javax.jdo.option.connectionURL,将该name对应的value修改为MySQL的地址:

    <property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://192.168.56.181:3306/hive?createDatabaseIfNotExist=true</value><description>JDBC connect string for a JDBC metastore.To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.</description>
    </property>
  • 搜索javax.jdo.option.ConnectionDriverName,将该name对应的value修改为MySQL驱动类路径:

    <property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value><description>Driver class name for a JDBC metastore</description>
    </property>
    <property>
  • 搜索javax.jdo.option.ConnectionUserName,将对应的value修改为MySQL数据库登录名:

    <property><name>javax.jdo.option.ConnectionUserName</name><value>root</value><description>Username to use against metastore database</description>
    </property>
  • 搜索javax.jdo.option.ConnectionPassword,将对应的value修改为MySQL数据库的登录密码:

    <property><name>javax.jdo.option.ConnectionPassword</name><value>Love88me</value><description>password to use against metastore database</description>
    </property>
  • 搜索hive.metastore.schema.verification,将对应的value修改为false:

    <property><name>hive.metastore.schema.verification</name><value>false</value><description>Enforce metastore schema version consistency.True: Verify that version information stored in is compatible with one from Hive jars.  Also disable automaticschema migration attempt. Users are required to manually migrate schema after Hive upgrade which ensuresproper metastore schema migration. (Default)False: Warn if the version information stored in metastore doesn't match with one from in Hive jars.</description>
    </property>

2.4.4 在$HIVE_HOME/conf目录下新建hive-env.sh

#进入目录
[root@apollo dtadmin]# cd $HIVE_HOME/conf
#将hive-env.sh.template 复制一份并重命名为hive-env.sh
[root@apollo conf]# cp hive-env.sh.template hive-env.sh
#打开hive-env.sh并添加如下内容
[root@apollo conf]# vim hive-env.sh
export HADOOP_HOME=/home/hadoop/hadoop2.7.3
export HIVE_CONF_DIR=/usr/local/hive/conf
export HIVE_AUX_JARS_PATH=/usr/local/hive/lib

3.启动和测试

3.1.MySQL数据库进行初始化

#进入$HIVE/bin
[root@apollo conf]# cd $HIVE_HOME/bin
#对数据库进行初始化:
[root@apollo bin]# schematool -initSchema -dbType mysql

如下图:

执行成功后,查看mysql数据库:

3.2.启动Hive

[root@apollo bin]# ./hive

如下图:

3.3.测试

3.3.1.查看函数命令:

hive>show functions;
OK
!
!=
$sum0
%
&
*
+
-
/
<
<=
<=>
<>
=
==
>
>=
^
abs
acos
add_months
aes_decrypt
aes_encrypt
...

3.3.2.查看sum函数的详细信息的命令:

hive> desc function sum;
OK
sum(x) - Returns the sum of a set of numbers
Time taken: 0.008 seconds, Fetched: 1 row(s)

3.3.3.新建数据库、数据表

#新建数据库
hive> create database sbux;
#新建数据表
hive> use sbux;
hive> create table student(id int, name string) row format delimited fields terminated by '\t';
hive> desc student;
OK
id                      int
name                    string
Time taken: 0.114 seconds, Fetched: 2 row(s)

3.3.4.将文件写入到表中

3.3.4.1.在$HIVE_HOME下新建一个文件
#进入#HIVE_HOME目录
[root@apollo hive]# cd $HIVE_HOME
#新建文件student.dat
[root@apollo hive]# touch student.dat
#在文件中添加如下内容
[root@apollo hive]# vim student.dat
001     david
002     fab
003     kaishen
004     josen
005     arvin
006     wada
007     weda
008     banana
009     arnold
010     simon
011     scott

说明:ID和name直接是TAB键,不是空格,因为在上面创建表的语句中用了terminated by ‘\t’所以这个文本里id和name的分割必须是用TAB键(复制粘贴如果有问题,手动敲TAB键吧),还有就是行与行之间不能有空行,否则下面执行load,会把NULL存入表内,该文件要使用unix格式,如果是在windows上用txt文本编辑器编辑后在上载到服务器上,需要用工具将windows格式转为unix格式,例如可以使用Notepad++来转换。

3.3.4.2.导入数据
hive> load data local inpath '/usr/local/hive/student.dat' into table sbux.student;
Loading data to table sbux.student
OK
Time taken: 0.802 seconds
3.3.4.3查看导入数据是否成功
hive> select * from student;
OK
1   david
2   fab
3   kaishen
4   josen
5   arvin
6   wada
7   weda
8   banana
9   arnold
10  simon
11  scott
Time taken: 0.881 seconds, Fetched: 11 row(s)

3.4.在界面上查看刚刚写入的hdfs数据

在hadoop的namenode上查看:

3.5.在mysql的hive数据里查看

CentOS7.0基于hadoop集群安装配置Hive相关推荐

  1. 原创:centos7.1下 ZooKeeper 集群安装配置+Python实战范例

    centos7.1下 ZooKeeper 集群安装配置+Python实战范例 下载:http://apache.fayea.com/zookeeper/zookeeper-3.4.9/zookeepe ...

  2. Hadoop是小象——Hadoop集群安装配置

    文章目录 所需软件 集群网络配置 集群SSH免密登陆设置 Hadoop安装配置 所需软件 Linux所需软件包括: JavaTM1.5.x,必须安装,建议选择Sun公司发行的Java版本(以前安装过) ...

  3. hadoop集群安装配置

    1.环境介绍 (1)软件版本 OS:rhel6.3-x86_64 JDK:jdk1.6.0_41 Hadoop:hadoop-1.1.1 (2)IP规划 hserver  192.168.183.13 ...

  4. Hadoop集群安装与配置

    转载自Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOS 本教程讲述如何配置 Hadoop 集群,默认读者已经掌握了 Hadoop 的单机伪分布式配置,否则请先查看Had ...

  5. 记一次 Centos7.x Hadoop3.x集群安装部署 Pig 0.17.0

    基本信息 官网 http://pig.apache.org/ 下载地址 http://www.apache.org/dyn/closer.cgi/pig https://mirror.bit.edu. ...

  6. 集群节点基于Hadoop集群的HBase集群的配置【2】

    首先声明,我是一个菜鸟.一下文章中现出技术误导情况盖不负责 基于Hadoop集群的HBase集群的配置 1.准备工作 a.经已实现安装的Hadoop集群环境 b.所须要的软件包 zookeeper-3 ...

  7. ElasticSearch-2.0.0集群安装配置与API使用实践

    ElasticSearch是基于全文搜索引擎库Lucene构建的分布式搜索引擎,我们可以直接使用ElasticSearch实现分布式搜索系统的搭建与使用,都知道,Lucene只是一个搜索框架,它提供了 ...

  8. VMware Workstation 9下基于Ubuntu 12.10服务器版本的Hadoop集群的配置

    (主要参照http://os.51cto.com/art/201211/363116.htm) 一.概述 其实,网上关于Hadoop集群的配置的资料不可谓不少,但是,细细找来,多半是在有图形桌面的环境 ...

  9. 一步步教你Hadoop多节点集群安装配置

    一步步教你Hadoop多节点集群安装配置 1.集群部署介绍 1.1 Hadoop简介  Hadoop是Apache软件基金会旗下的一个开源分布式计算平台.以Hadoop分布式文件系统HDFS(Hado ...

最新文章

  1. 旧手机的新玩法:postmarketOS 已适配上百款安卓手机
  2. 上升沿_为什么示波器上升时间 Tr=0.35/BW ?
  3. php数组foreach循环添加键值对_php 给数组增加键值对
  4. 第十五节:Asp.Net Core MVC和WebApi路由规则的总结和对比-第二十节
  5. 3.Programming in TensorFlow and Keras
  6. bzoj5324:[Jxoi2018]守卫
  7. Apache Kafka 迎来了“后浪”
  8. key store是否创建_EKS-实践一 创建EKS集群
  9. 图解Http学习第二章
  10. 漫谈Google的Native Client(NaCl)技术(二)–技术篇(兼谈LLVM)
  11. sql server 查询工具_分享一款开源的SQL查询优化工具--EverSQL
  12. Android 12 源码下载、编译与烧录到Pixel 3a
  13. 2018年将会改变人工智能的5个大数据趋势
  14. github 本地提交代码到服务器
  15. Qt之Cannot retrieve debugging output.
  16. 《天道》解读三:什么是天道?
  17. 【DQN高级技巧2】DQN高估问题:Target Network和Double DQN
  18. 【读书笔记】《学会提问》——受用一生的批判性思维
  19. 浏览器隐私模式真的可以保证我们的隐私不被透露吗?
  20. NeRF与GAN的交融(一)——NeRF论文阅读

热门文章

  1. NLP之BERT英文阅读理解问答SQuAD 2.0超详细教程
  2. 武汉大学计算机学院深造率,2017届本科毕业生深造率排名与分析
  3. python教程视频大全_Python基础视频教程全集
  4. Python实现聊天机器人(语音录入与语音输出)
  5. 零信任|IAM是基于动态身份的安全新边界
  6. 【C语言中缀转后缀】
  7. Java破解反编译逆向工程笔记
  8. C语言中log函数怎么使用啊
  9. 论文笔记——基于多传感器融合的紧耦合SLAM系统
  10. 【单片机基础】I2C通信-基于STC89C52RC