Mac安装Hive1.2.1

这几天在折腾Hive的相关东西,所以打算在自己的机器上安装下Hive,可是按照教程总是出这样那样的错误,着实蛋疼,最终发现错误是我的Mysql端口是3307,WTF。。这个问题已经坑了我几次了。在此把查看Mysql开启端口的命令放这,以后别被坑到了。SHOW GLOBAL VARIABLES LIKE 'PORT';

下面为完整安装Hive的全过程

安装MySQL服务器端和MySQL客户端,并启动MySQL服务

这个就不用说了,Mac下下载Mysql的DMG安装包安装即可

为Hive建立相应的MySQL账户,并赋予足够的权限

hadoop@ubuntu:~$ mysql -uroot -pmysql
mysql> CREATE USER 'hive' IDENTIFIED BY 'mysql';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANT OPTION;
mysql> flush privileges;

建立 Hive 专用的元数据库,记得创建时用刚才创建的“hive”账号登陆

$ mysql -uhive -pmysql
mysql> create database hive;

把MySQL的JDBC驱动包复制到Hive的lib目录下

JDBC驱动包的版本:mysql-connector-java-5.1.26-bin.jar

安装Hadoop

这个我之前有博文专门介绍了,坑也挺多,注意安装

安装Hive

  1. 在Hive的官网下载Hive1.2.1的压缩包
  2. 解压缩到/usr/local/Cellar/hive文件夹中
  3. 修改配置文件sudo vi /etc/profile 添加

    HIVE_HOME=/usr/local/Cellar/hive
    PATH=$PATH:$HIVE_HOME/bin
    export PATH
  4. 切换到conf目录下cd /usr/local/Cellar/hive/conf

  5. 修改Hive的xml配置
    把几个带.template后缀的模板文件,复制一份变成不带.template的配置文件,注意hive-default.xml.template这个要复制二份,一个是hive-default.xml,另一个是hive-site.xml,其中hive-site.xml为用户自定义配置,hive-default.xml为全局配置,hive启动时,-site.xml自定义配置会覆盖-default.xml全局配置的相同配置项。

    cp hive-default.xml.template hive-default.xml
    cp hive-default.xml.template hive-site.xml
    cp hive-exec-log4j.properties.template hive-exec-log4j.properties
    cp hive-log4j.properties.template hive-log4j.properties
    cp beeline-log4j.properties.template beeline-log4j.properties
  6. 修改hive-site.xml
    下面的配置文件中,有一些关于目录的参数,先提前把目录建好,

hive.exec.local.scratchdir
hive.downloaded.resources.dir

这二项对应的目录,是指本地目录(必须先手动建好),其它目录为hdfs中的目录(hive启动时,先自动建好,如果自动创建失败,也可以手动通过shell在hdfs中创建)

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>

<!--
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:postgresql://localhost:5432/hive</value>
</property>

<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.postgresql.Driver</value>
</property>
-->


<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://127.0.0.1:3307/hive?characterEncoding=UTF-8</value>
</property>

<property>
<name>javax.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>mysql</value>
</property>


<property>
<name>hive.exec.scratchdir</name>
<value>/tmp/hive</value>
</property>

<property>
<name>hive.exec.local.scratchdir</name>
<value>/usr/local/Cellar/hive/tmp</value>
</property>

<property>
<name>hive.downloaded.resources.dir</name>
<value>/usr/local/Cellar/hive/tmp/${hive.session.id}_resources</value>
</property>

<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>

</configuration>

替换hadoop 2.6.0中的jline jar包

由于hive 1.2.0自带的jline包跟hadoop 2.6.0自带的版本不一致,因此需要将$HIVE_HOME/lib/jline-2.12.jar 这个文件替换掉$HADOOP_HOME/share/hadoop/yarn/lib 下原来的版本 (即:将旧版本删除,复制新版本到此目录),否则hive启动将失败.即将hive中的jar包复制到hadoop的对应目录下,重新启动Hadoop

测试验证,输入hive查看是否运行正常

$HIVE_HOME/bin/hive

如果能正常进入 hive> 即表示正常

  1. 创建表测试
    hive>create table test(id int);
  2. 将hdfs中的文件内容加载到表中
    hive> load data inpath '/user/Gao/input/duplicate.txt' into table 测试;
  3. 测试求平均值
hive> select avg(id) from 测试;

Query ID = jimmy_20150607191924_ccfb231f-6c92-47ac-88f1-eb32882a0010

Total jobs = 1

Launching Job 1 out of 1

Number of reduce tasks determined at compile time: 1

In order to change the average load for a reducer (in bytes):

set hive.exec.reducers.bytes.per.reducer=<number>

In order to limit the maximum number of reducers:

set hive.exec.reducers.max=<number>

In order to set a constant number of reducers:

set mapreduce.job.reduces=<number>

Job running in-process (local Hadoop)

2015-06-07 19:19:27,980 Stage-1 map = 100%, reduce = 100%

Ended Job = job_local1537497991_0001

MapReduce Jobs Launched:

Stage-Stage-1: HDFS Read: 190 HDFS Write: 0 SUCCESS

Total MapReduce CPU Time Spent: 0 msec

OK

3.909090909090909

Time taken: 3.322 seconds, Fetched: 1 row(s)

从输出的信息看,hive底层仍然是将SQL语句翻译成mapreduce作业,提交给hadoop的MR引擎。从使用层面看,采用SQL语句方式来分析数据,确实比MapReduce或PIG方式方便太多了

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 安装MySQL服务器端和MySQL客户端,并启动MySQL服务
  2. 2. 为Hive建立相应的MySQL账户,并赋予足够的权限
  3. 3. 建立 Hive 专用的元数据库,记得创建时用刚才创建的“hive”账号登陆
  4. 4. 把MySQL的JDBC驱动包复制到Hive的lib目录下
  5. 5. 安装Hadoop
  6. 6. 安装Hive
  7. 7. 替换hadoop 2.6.0中的jline jar包
  8. 8. 测试验证,输入hive查看是否运行正常
,