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方式方便太多了。

     

     

  • 相关阅读:
    Ajax入门
    多线程入门(五)
    多线程入门(四)
    多线程入门(三)
    多线程入门(二)
    多线程入门(一)
    git使用简介
    Windows远程登录到VirtualBox安装的Ubuntu11.10
    阿里面试2(转)
    百度java开发面试题
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/how-to-install-hive-1-2-0-on-mac.html
Copyright © 2011-2022 走看看