杜龙少(sdvdxl)

hadoop集成hive

Word count: 792 / Reading time: 4 min
2016/03/11 Share

前置条件

hadoopyarn已经配置好并且成功运行

选择版本和下载

下载hive有两个版本可以选择hive1hive2hive2版本MR功能已经废弃将来版本可能会直接去掉如果要用hiveMR功能那么请选择hive1相应版本否则的话选哪个都可以进行测试

配置hive

  1. 下载完hive解压然后sudo vi /etc/profile编辑文件添加环境变量
1
2
3
4
HIVE_HOME=hive目录的绝路路径
PATH=$PATH:$HIVE_HOME

export HIVE_HOME PATH
  1. 控制台输入source /etc/profile使环境变量生效

  2. 进入$HIVE_HOME/conf目录拷贝hive-default.xml.template并重命名为hive-site.xml编辑如果没有该参数请自行添加存在则改之

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<property>
<name>hive.exec.scratchdir</name>
<value>/user/hive/tmp</value> <!--hdfs目录 hive目录需要手动创建,并改为777权限-->
<description>Scratch space for Hive jobs</description>
</property>

<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value> <!--hdfs目录需要手动创建-->
<description>location of default database for the warehouse</description>
</property>

<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value> <!--修改为自己的mysql数据库-->
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value> <!--mysql用户名-->
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value> <!--mysql密码-->
<description>password to use against metastore database</description>
</property>
  1. 然后查找value${system开头的替换成具体的本地绝对路径可以创建一个hive用户放到hive用户目录下

  2. 拷贝hive-env.sh.template并重命名hive-env.sh添加如下内容注意环境变量值更换为自己的路径

1
2
3
HADOOP_HOME=/home/hadoop/hadoop-2.7.1 

export JAVA_HOME=/usr/local/share/jdk1.8.0_73
  1. hive-site.xml拷贝一份到hadoop的配置目录
  2. 下载mysql驱动放到hive目录下的lib目录中
  3. 启动hive控制台输入hive如果正确则输出一段信息后进入hive交互模式

问题

  1. Caused by: org.datanucleus.store.rdbms.connectionpool.DatastoreDriverNotFoundException: The specified datastore driver (com.mysql.jdbc.Driver) was not found in the CLASSPATH. Please check your CLASSPATH specification, and the name of the driver.

    解决方法下载mysql驱动放到hivelib目录

  2. org.apache.hadoop.security.AccessControlException: Permission denied: user=hive, access=WRITE, inode=/tmp/hadoop-yarn/staging/hive/.staging:hadoop:supergroup:drwxr-xr-x

    解决方法hdfs中创建tmp目录并改为777权限

  3. Starting Job = job_1457683200911_0001, Tracking URL = http://10.10.1.110:8088/proxy/application_1457683200911_0001/
    Kill Command = /home/hadoop/hadoop-2.7.1/bin/hadoop job -kill job_1457683200911_0001
    Hadoop job information for Stage-1: number of mappers: 0; number of reducers: 0打开管理页面发现信息waiting for AM container to be allocated, launched and register with RM.

    解决方法yarn没有配置正确没有启动nodemanager启动命令yarn-daemon.sh start nodemanager启动之后即可运行job

参考资料

  1. hadoop2.2完全分布式集群+hive+mysql存储元数据配置排版有点乱请将就看
  2. hive导入HDFS数据 和上面毛病类似
CATALOG
  1. 1. 前置条件
  2. 2. 选择版本和下载
  3. 3. 配置 hive
  4. 4. 问题
    1. 4.0.1. 参考资料