`
wangmengbk
  • 浏览: 288416 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Hive 安装&配置及常见问题解决

 
阅读更多

hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

 

前提安装了hadoop

下载地址: http://apache.fayea.com/hive/hive-1.2.0/

版本: apache-hive-1.2.0-bin.tar.gz

解压: tar –zxvf apache-hive-1.2.0-bin.tar.gz

 

配置环境变量:

export HIVE_HOME=/opt/apache-hive-1.2.0-bin

export HIVE_CONF_DIR=$HIVE_HOME/conf

export HIVE_LIB=$HIVE_HOME/lib

export CLASSPATH=$CLASSPATH:$HIVE_LIB

export PATH=$HIVE_HOME/bin:$PATH

 

cd /opt/apache-hive-1.2.0-bin/conf 将hive-env.sh.template 拷贝为 hive-env.sh

cp hive-env.sh.template hive-env.sh

更改hive-env.sh的内容: 

vi hive-env.sh

 

HADOOP_HOME=/opt/soft-228238/hadoop-2.6.0

export HIVE_CONF_DIR=/opt/apache-hive-1.2.0-bin/conf

 

cp hive-default.xml.template hive-site.xml

vi hive-site.xml

修改如下配置中的信息:

 <property>

    <name>javax.jdo.option.ConnectionURL</name>

    <value>jdbc:oracle:thin:@192.168.XX.XXX:1521:dpap</value>

    <description>JDBC connect string for a JDBC metastore</description>

  </property>

 <property>

    <name>javax.jdo.option.ConnectionDriverName</name>

    <value>oracle.jdbc.driver.OracleDriver</value>

    <description>Driver class name for a JDBC metastore</description>

  </property>

 <property>

    <name>javax.jdo.option.ConnectionUserName</name>

    <value>user</value>

    <description>Username to use against metastore database</description>

  </property>

 <property>

    <name>javax.jdo.option.ConnectionPassword</name>

    <value>password</value>

    <description>password to use against metastore database</description>

  </property>

 

 将 数据库驱动包(oracle-jdbc-10.1.0.2.0.jar) 放入到 /opt/apache-hive-1.2.0-bin/lib 中

启动 hive

cd  /opt/apache-hive-1.2.0-bin/bin

执行:./hive --service metastore  (使用远端数据库 hive服务端程序)

./hive

hive -hiveconf hive.root.logger=DEBUG,console

schematool -dbType oracle -initSchema

 

常见问题:

  • 启动报错:

    Logging initialized using configuration in jar:file:/opt/apache-hive-1.2.0-bin/lib/hive-common-1.2.0.jar!/hive-log4j.properties

Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: 

${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D

at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:519)

at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:677)

 

 at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:621)

 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

 at java.lang.reflect.Method.invoke(Method.java:606)

 at org.apache.hadoop.util.RunJar.run(RunJar.java:221)

at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

Caused by: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D

 at org.apache.hadoop.fs.Path.initialize(Path.java:206)

 at org.apache.hadoop.fs.Path.<init>(Path.java:172)

 at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:560)

at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:505)

        ... 8 more

Caused by: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D

at java.net.URI.checkPath(URI.java:1804)

 at java.net.URI.<init>(URI.java:752)

 at org.apache.hadoop.fs.Path.initialize(Path.java:203)

        ... 11 more

 

解决方案:cd  /opt/soft-228238/hadoop-2.6.0/bin     

执行: /hadoop fs -chmod -R 777 /tmp/hive

cd /opt/apache-hive-1.2.0-bin/conf  

vi  hive-site.xml (修改如下配置信息的value)

<property>

    <name>hive.exec.local.scratchdir</name>

    <value>/tmp/hive</value>

    <description>Local scratch space for Hive jobs</description>

  </property>

<property>

    <name>hive.downloaded.resources.dir</name>

    <value>/tmp/${hive.session.id}_resources</value>

    <description>Temporary local directory for added resources in the remote file system.</description>

  </property>

<property>

    <name>hive.querylog.location</name>

    <value>/tmp/hive</value>

    <description>Location of Hive run time structured log file</description>

  </property>

<property>

    <name>hive.server2.logging.operation.log.location</name>

    <value>/tmp/hive/operation_logs</value>

    <description>Top level directory where operation logs are stored if logging functionality is enabled</description>

  </property>

 

  • 错误2:

[ERROR] Terminal initialization failed; falling back to unsupported

java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected

  at jline.TerminalFactory.create(TerminalFactory.java:101)

  at jline.TerminalFactory.get(TerminalFactory.java:158)

 at jline.console.ConsoleReader.<init>(ConsoleReader.java:229)

at jline.console.ConsoleReader.<init>(ConsoleReader.java:221)

at jline.console.ConsoleReader.<init>(ConsoleReader.java:209)

at org.apache.hadoop.hive.cli.CliDriver.setupConsoleReader(CliDriver.java:787)

 at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:721)

 at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:681)

at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:621)

 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

 at java.lang.reflect.Method.invoke(Method.java:606)

 at org.apache.hadoop.util.RunJar.run(RunJar.java:221)

 at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

 

解决方案:

原因是hadoop目录下存在老版本jline:

/hadoop-2.6.0/share/hadoop/yarn/lib:

-rw-r--r-- 1 root root   87325 Mar 10 18:10 jline-0.9.94.jar

解决方法是:

将hive下的新版本jline的JAR包拷贝到hadoop下:

cp  /opt/apache-hive-1.2.0-bin/lib/jline-2.12.jar ./

mv jline-0.9.94.jar jline-0.9.94.jar.bak

 

  • hive 连接 oracle 创建表失败

 使用 create table 命令创建表失败:

日志信息在 /temp/root/hive.log 目录查看日志错误信息:



 
 解决方案:

用解压缩工具打开${HIVE_HOME}/lib中的hive-metastore-1.2.0.jar,hive-jdbc-1.2.0-standalone.jar发现名为package.jdo的文件,打开该文件并找到下面的内容。

<field name="viewOriginalText" default-fetch-group="false">

        <column name="VIEW_ORIGINAL_TEXT" jdbc-type="LONGVARCHAR"/>

</field>

<field name="viewExpandedText" default-fetch-group="false">

        <column name="VIEW_EXPANDED_TEXT" jdbc-type="LONGVARCHAR"/>

</field>

可以发现列VIEW_ORIGINAL_TEXT和VIEW_EXPANDED_TEXT的类型都为LONGVARCHAR,对应于Oracle中的LONG,这样就与Oracle表只能存在一列类型为LONG的列的要求相矛盾,所以就出现错误了。

按照Hive官网的建议将该两列的jdbc-type的值改为CLOB,修改后的内容如下所示。

<field name="viewOriginalText"default-fetch-group="false">

             <column name="VIEW_ORIGINAL_TEXT" jdbc-type="CLOB"/>

</field>

<field name="viewExpandedText"default-fetch-group="false">

             <column name="VIEW_EXPANDED_TEXT" jdbc-type="CLOB"/>

</field>

修改以后,重启hive。

分享到:
评论

相关推荐

    利用Hive进行复杂用户行为大数据分析及优化案例

    12_Hadoop及Hive配置支持snappy压缩 13_Hive中的常见调优 14_Hive中的数据倾斜及解决方案-三种join方式 15_Hive中的数据倾斜及解决方案-group by 16_Hive中使用正则加载数据 17_Hive中使用Python脚本进行预处理

    【63课时完整版】大数据实践HIVE详解及实战

    48.Hadoop及Hive配置支持snappy压缩 49.Hive中的常见调优 50.Hive中的数据倾斜及解决方案-三种join方式 51.Hive中的数据倾斜及解决方案-group by 52.Hive中使用正则加载数据 53. Hive中使用Python脚本进行预处理 第...

    cdh继承tez引擎 cdh添加tez引擎 hive引擎增加

    包括pom修改的每个截图和配置,该文档从有道云笔记到处略加修改,其中pom内容格式需要你手动调整一下. 富含 大量截图帮助定位和配置. 含hive on tez 常见报错的解决方法. tez比spark更省心. spark容易出现内存问题.

    新版Hadoop视频教程 段海涛老师Hadoop八天完全攻克Hadoop视频教程 Hadoop开发

    02-hive的元数据库mysql方式安装配置.avi 03-hive的使用.avi 04-hive的常用语法.avi 05-hql语法及自定义函数.avi 06-hbase表结构.avi 07-hbase集群架构及表存储机制.avi 08-hbase-shell.avi 09-hbase的java ...

    大型分布式网站架构与实践

     2.1.1 memcache简介及安装 60  2.1.2 memcache API与分布式 64  2.1.3 分布式session 69  2.2 持久化存储 71  2.2.1 MySQL扩展 72  2.2.2 HBase 80  2.2.3 Redis 91  2.3 消息系统 95  2.3.1 ActiveMQ & ...

    Hadoop实战(第2版)

    技术点79 MapReduce 函数、作业和管道的单元测试13.1.3 ...问题13.2.3 调试JVM 配置技术点83 解决任务的JVM 启动参数13.2.4 高效调试的编码准则技术点84 调试和错误处理13.3 MapReduce 陷阱...

    Hadoop硬实战 [(美)霍姆斯著][电子工业出版社][2015.01]_PDF电子书下载 带书签目录 高清完整版.rar )

    7.1 使用图进行数据建模和解决问题 7.1.1 模拟图 7.1.2 最短路径算法 技术点52 找出两个用户间的最短距离 7.1.3 friends-of-friends(FoF) 技术点53 计算FoF 7.1.4 PageRank 技术点54 通过Web ...

    大数据学习计划.pdf

    理解 Hive 架构及执⾏原理 ; Hive 的优化(分区、桶) ; Hive SQL 语句优化; Hive 常见故障诊断; 4 在上个模块中,OLAP 类型的需求得到了很好的解决⽅案,即针对数据查询分析的应⽤。但是这些组件对于数据的随机删改...

    美团DB数据同步到数据仓库的架构与实践

    一般常用的解决方案是批量取数并Load:直连MySQL去Select表中的数据,然后存到本地文件作为中间存储,最后把文件Load到Hive表中。这种方案的优点是实现简单,但是随着业务的发展,缺点也逐渐暴露出来:

    大数据中台架构栈.doc

    因此这篇文章旨在梳理市面上常见的开源技术方案,背后原理及应用场景,帮助产品经 理对大数据技术体系有个大致全面的了解。 一般来说,我们将数据整个链条区分为四个环节,从数据采集传输,到数据存储,再到 数据...

Global site tag (gtag.js) - Google Analytics