zoukankan      html  css  js  c++  java
  • hadoop: hive 1.2.0 在mac机上的安装与配置

    环境:mac OS X Yosemite + hadoop 2.6.0 + hive 1.2.0 + jdk 1.7.0_79

    前提:hadoop必须先安装,且处于运行状态(伪分式模式或全分布模式均可)

    hive官网地址:http://hive.apache.org/

    建议:经个人实践,在mac OS X Yosemite 环境下,如果使用apache下载的原始hadoop 2.6.0,不管jdk安装成什么版本(1.61.71.8都试过),hive 1.2.0启动时,始终报jdk版本不匹配,后来在mac上将hadoop 2.6.0源编译成mac原生版本后,就正常了。

    如果有朋友也遇到类似情况,请参考  mac OS X Yosemite 上编译hadoop 2.6.0/2.7.0及TEZ 0.5.2/0.7.0 注意事项

    一、环境变量

    ...
    export HADOOP_HOME=/home/hadoop/hadoop-2.6.0
    export HIVE_HOME=/home/hadoop/hive-1.2.0
    ...
    export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
    ...
    export PATH=${HIVE_HOME}/bin:$PATH:$HOME/bin:

    三、修改hive中的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

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

     1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
     2 
     3 <configuration>
     4 
     5     <property>
     6         <name>hive.metastore.local</name>
     7         <value>true</value>
     8     </property>
     9     
    10    <!-- 
    11     <property>
    12         <name>javax.jdo.option.ConnectionURL</name>
    13         <value>jdbc:postgresql://localhost:5432/hive</value>
    14     </property>
    15     
    16     <property>
    17         <name>javax.jdo.option.ConnectionDriverName</name>
    18         <value>org.postgresql.Driver</value>
    19     </property>
    20     -->
    21    
    22    
    23     <property>
    24         <name>javax.jdo.option.ConnectionURL</name>
    25         <value>jdbc:mysql://127.0.0.1:3306/hive?characterEncoding=UTF-8</value>
    26     </property>
    27     
    28     <property>
    29         <name>javax.jdo.option.ConnectionDriverName</name>
    30         <value>com.mysql.jdbc.Driver</value>
    31     </property>
    32     
    33     <property>
    34         <name>javax.jdo.option.ConnectionUserName</name>
    35         <value>hive</value>
    36     </property>
    37     
    38     <property>
    39         <name>javax.jdo.option.ConnectionPassword</name>
    40         <value>hive</value>
    41     </property>
    42     
    43    
    44     <property>
    45         <name>hive.exec.scratchdir</name>
    46         <value>/tmp/hive</value>
    47     </property>
    48     
    49     <property>
    50         <name>hive.exec.local.scratchdir</name>
    51         <value>/Users/jimmy/app/hive-1.2.0/tmp</value>
    52     </property>
    53 
    54     <property>
    55         <name>hive.downloaded.resources.dir</name>
    56         <value>/Users/jimmy/app/hive-1.2.0/tmp/${hive.session.id}_resources</value>
    57     </property>
    58 
    59     <property>
    60         <name>hive.metastore.warehouse.dir</name>
    61         <value>/user/hive/warehouse</value>    
    62     </property>
    63 
    64 </configuration>

    注:hive中有一个元数据的概念,元数据记录了当前有哪些表,哪些字段,字段数据类型等,由于hdfs是没有这些额外信息的,因此hive需要借助传统数据库来记录这些元数据信息,默认情况下,采用内置数据库derby来记录,也可以通过配置将这些元数据记录到mssqlmysqloraclepostgreSQL等大型RDMBS中,上面的配置中,演示了MYSQL、PostgreSQL二种配置,如果把23-41注释掉,就变成derby独立模式。

    另:上面的配置文件中,有一些关于目录的参数,先提前把目录建好,

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

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

    四、替换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_HOME/bin/hive

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

    a) 创建表测试

    hive>create table test(id int);

    b) 将hdfs中的文件内容加载到表中

    hive> load data inpath '/input/duplicate.txt' into table test;

    注:duplicate.txt的内容可在以前的博客文章中找到

    c) 测试求平均值

    hive> select avg(id) from test;

    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语句方式来分析数据,确实比MapReducePIG方式方便太多了。

     

     

  • 相关阅读:
    Bootstrap 2.2.2 的新特性
    Apache POI 3.9 发布,性能显著提升
    SQL Relay 0.48 发布,数据库中继器
    ProjectForge 4.2.0 发布,项目管理系统
    红帽企业 Linux 发布 6.4 Beta 版本
    红薯 快速的 MySQL 本地和远程密码破解
    MariaDB 宣布成立基金会
    Percona XtraBackup 2.0.4 发布
    Rocks 6.1 发布,光盘机群解决方案
    精通Servlet研究,HttpServlet的实现追究
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/how-to-install-hive-1-2-0-on-mac.html
Copyright © 2011-2022 走看看