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.6\1.7\1.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来记录,也可以通过配置将这些元数据记录到mssql\mysql\oracle\postgreSQL等大型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语句方式来分析数据,确实比MapReduce或PIG方式方便太多了。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
mac OS X Yosemite 上编译hadoop 2.6.0/2.7.0及TEZ 0.5.2/0.7.0 注意事项
1、jdk 1.7问题 hadoop 2.7.0必须要求jdk 1.7.0,而oracle官网已经声明,jdk 1.7 以后不准备再提供更新了,所以趁现在还能下载,赶紧去down一个mac版吧 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 应该选择mac ox 64位的版本 http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-macosx-x64.dmg 注:Yosemite上,只能安装jdk1.7.0_79 这个版本,比它低的jdk 1.7版本已经没法正常安装了。 2、yum -install 问题 mac 虽然也是linux内核,但是很多其它linux版本下有用的东西,却被apple阉割掉了,比如apt-get,yum这些都没有,解决办法有二个: a) 使用Mac Ports代替,官网地址:http://www.macports.org/ 还有一篇网友的入门文章:http://www.cc...
- 下一篇
hbase集群写不进去数据的问题追踪过程
hbase从集群中有8台regionserver服务器,已稳定运行了5个多月,8月15号,发现集群中4个datanode进程死了,经查原因是内存 outofMemory了(因为这几台机器上部署了spark,给spark开的-Xmx是32g),然后对从集群进行了恢复并进行了补数据,写负载比较 重,又运行了几天,发现从集群写不进去数据了 ①、regionserver端 regionserver端现象一、 2014-08-21 15:03:31,011 INFO org.apache.hadoop.hbase.regionserver.HRegionServer: regionserver60020.periodicFlusher requesting flush for region table_version,hour_search_860010-1118000000_2014010418,1403685954922.640fc829f767a4e33e296fc4f4cca4a4. after a delay of 13125 2014-08-21 15:03:31,01...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Mario游戏-低调大师作品
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块