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语句方式来分析数据,确实比MapReduce或PIG方式方便太多了。
- 推荐算法——基于图的推荐算法PersonalRank算法
- 推荐算法——非负矩阵分解(NMF)
- 【Go 语言社区】转-golang windows 判断锁屏
- 【Go 语言社区】单点redis 持久化在高并发下存在延迟情况
- 设计模式(2)-策略模式之多用组合少用继承
- Golang获取随机端口和本机ip地址
- 设计模式(3)-装扮你的类(装饰模式)
- [Go 语言社区]服务器读取配置文件只-json数据
- gsoap开发webservice
- [Go 语言社区]测试模块之---utf8例子
- org.hibernate.type.StringType cannot be cast to org.hibernate.type.VersionType
- JBPM4.4(2)-state结点和decision结点
- [Go 语言社区] Golang架构底层---日志函数
- [Go 语言社区]服务器游戏用户登陆数据读取函数
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- elastic search 日志不打印问题(root用户惹的祸)
- 起飞 | 应用YOLOV4 - DeepSort 实现目标跟踪
- 如何将elastic search 的健康状态由红色red变为绿色green
- 拥抱K8s系列-01
- elastic search 修改日志级别为warn
- prometheus学习笔记(3)-使用exporter监控mysql
- elasticsearch query里面的slop选项
- 彻底明白Android设计模式—(动态)代理模式
- elastic search 如何将yellow 状态变为green健康状态
- All clients has disconnected from. You can graceful shutdown now., dubbo version: , current host
- Failed to instantiate org.mybatis.spring.SqlSessionTemplate Constructor threw exception
- 护网之Linux应急处理操作手册
- 对新版安全狗学习
- redis key的删除策略及LRU的实现
- 护网Linux应急处置操作手册-Tools篇