Hadoop Hive Hbase 对应版本

Hive官网下载

我们以Hadoop版本作为参考适配Hive Hbase即可, Hadoop版本是2.6.1 所以可以选择Hive1.2.1以上版本,HBase-1.2.x 至 HBase-2.0.x即可.

 

配置SQL

  • 下载sql
 
  1. mutex@mutex-dl:~$ sudo apt-get install mysql-server mysql-client
  • 启动sql
 
  1. mutex@mutex-dl:~$ sudo /etc/init.d/mysql start      (Ubuntu版本)     
  2. * Starting MySQL database server mysqld [ OK ]

sudo /etc/init.d/mysql restart -- 重启sql 
sudo /etc/init.d/mysql stop -- 停止sql

  • 新建hive用户 
 

下载Hive

 
  1. mutex@mutex-dl:~$ su - hadoop
  2. 密码:
  3. hadoop@mutex-dl:~$ cd /tmp
  4. hadoop@mutex-dl:/tmp$ wget http://www-us.apache.org/dist/hive/hive-2.1.1/apache-hive-2.1.1-bin.tar.gz
  5. hadoop@mutex-dl:/tmp$ sudo tar xvzf apache-hive-2.1.1-bin.tar.gz -C /usr/local

请注意,这里一开始就切换到hadoop用户环境,中间不要再切换用户,防止在配置过程中出现用户权限问题

另外如果上面的链接拒绝访问,那么请用前面提供的Hive官网自行下载,并解压到 /usr/local目录下即可

 

Hive环境变量

打开~/.bashrc 并配置如下:

 
  1. export HIVE_HOME=/usr/local/apache-hive-2.1.1-bin
  2. export HIVE_CONF_DIR=/usr/local/apache-hive-2.1.1-bin/conf
  3. export PATH=$HIVE_HOME/bin:$PATH
  4. export CLASSPATH=$CLASSPATH:/usr/local/hadoop/lib/*:.
  5. export CLASSPATH=$CLASSPATH:/usr/local/apache-hive-2.1.1-bin/lib/*:.

然后命令行使之生效

 
  1. hadoop@mutex-dl:/tmp$ source ~/.bashrc
 

新建Hive warehouse目录

 
  1. hadoop@mutex-dl:/tmp$ echo $HADOOP_HOME
  2. /usr/local/hadoop

显示Hadoop-home配置的真是目录,然后再新建目录以供以后Hive使用

 
  1. hadoop@mutex-dl:~$ hdfs dfs -ls /
  2. drwxr-xr-x - hduser supergroup 0 2018-1-23 11:17 /hbase
  3. drwx------ - hduser supergroup 0 2018-1-18 16:04 /tmp
  4. drwxr-xr-x - hduser supergroup 0 2018-1-18 09:13 /user
  5. hadoop@mutex-dl:~$ hdfs dfs -mkdir /user/hive/warehouse
  6. hadoop@mutex-dl:~$ hdfs dfs -chmod g+w /tmp
  7. hadoop@mutex-dl:~$ hdfs dfs -chmod g+w /user/hive/warehouse
  8. hadoop@mutex-dl:~$ hdfs dfs -ls /
  9. drwxr-xr-x - hduser supergroup 0 2018-1-23 11:17 /hbase
  10. drwx-w---- - hduser supergroup 0 2018-1-18 16:04 /tmp
  11. drwxr-xr-x - hduser supergroup 0 2018-1-23 17:18 /user
  12. hadoop@mutex-dl:~$ hdfs dfs -ls /user
  13. drwxr-xr-x - hduser supergroup 0 2018-1-18 23:17 /user/hduser
  14. drwxr-xr-x - hduser supergroup 0 2018-1-23 17:18 /user/hive
 

配置Hive

 
  1. hadoop@mutex-dl:~$ cd $HIVE_HOME/conf
  2. hadoop@mutex-dl:/usr/local/apache-hive-2.1.1-bin/conf$ sudo cp hive-env.sh.template hive-env.sh

编辑hive-env.sh,新加入配置

 
  1. export HADOOP_HOME=/usr/local/hadoop
 

下载Apache Derby

 
  1. hadoop@mutex-dl:~$ cd /tmp
  2. hadoop@mutex-dl:/tmp$ wget http://archive.apache.org/dist/db/derby/db-derby-10.13.1.1/db-derby-10.13.1.1-bin.tar.gz
  3. hadoop@mutex-dl:/tmp$ sudo tar xvzf db-derby-10.13.1.1-bin.tar.gz -C /usr/local

如果wget拒绝访问,直接手动在浏览器中下载即可.

继续配置Derby,打开~/.bashrc,并新增以下内容

 
  1. export DERBY_HOME=/usr/local/db-derby-10.13.1.1-bin
  2. export PATH=$PATH:$DERBY_HOME/bin
  3. export CLASSPATH=$CLASSPATH:$DERBY_HOME/lib/derby.jar:$DERBY_HOME/lib/derbytools.jar

别忘记 随后用命令行 source ~/.bashrc使之随机生效.

再创建一个data目录

 
  1. hadoop@mutex-dl:/tmp$ sudo mkdir $DERBY_HOME/data
 

配置 Hive Metastore

 
  1. hadoop@mutex-dl:/tmp$ cd $HIVE_HOME/conf
  2. hadoop@mutex-dl:/usr/local/apache-hive-2.1.1-bin/conf$ sudo cp hive-default.xml.template hive-site.xml

编辑hive-site.xml,并新增以下内容

 
  1. <property>
  2. <name>javax.jdo.option.ConnectionURL</name>
  3. <value>jdbc:derby:;databaseName=metastore_db;create=true</value>
  4. <description>
  5. JDBC connect string for a JDBC metastore.
  6. To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
  7. For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
  8. </description>
  9. </property>

/usr/local/apache-hive-2.1.1-bin/conf当前目录下新建文件jpox.properties,添加以下内容

 
  1. javax.jdo.PersistenceManagerFactoryClass =
  2. org.jpox.PersistenceManagerFactoryImpl
  3. org.jpox.autoCreateSchema = false
  4. org.jpox.validateTables = false
  5. org.jpox.validateColumns = false
  6. org.jpox.validateConstraints = false
  7. org.jpox.storeManagerType = rdbms
  8. org.jpox.autoCreateSchema = true
  9. org.jpox.autoStartMechanismMode = checked
  10. org.jpox.transactionIsolation = read_committed
  11. javax.jdo.option.DetachAllOnCommit = true
  12. javax.jdo.option.NontransactionalRead = true
  13. javax.jdo.option.ConnectionDriverName = org.apache.derby.jdbc.ClientDriver
  14. javax.jdo.option.ConnectionURL = jdbc:derby://hadoop1:1527/metastore_db;create = true
  15. javax.jdo.option.ConnectionUserName = APP
  16. javax.jdo.option.ConnectionPassword = mine

然后修改apache-hive-2.1.1-bin整个目录的所有者

 
  1. hadoop@mutex-dl:/usr/local$ sudo chown -R hadoop:hadoop apache-hive-2.1.1-bin
 

初始化 Metastore schem

 
  1. hadoop@mutex-dl:/usr/local/apache-hive-2.1.1-bin/bin$ schematool -dbType derby -initSchema
  2. SLF4J: Class path contains multiple SLF4J bindings.
  3. SLF4J: Found binding in [jar:file:/usr/local/apache-hive-2.1.0-bin/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
  4. SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
  5. SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
  6. SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
  7. Metastore connection URL: jdbc:derby:;databaseName=metastore_db;create=true
  8. Metastore Connection Driver : org.apache.derby.jdbc.EmbeddedDriver
  9. Metastore connection User: APP
  10. Starting metastore schema initialization to 2.1.1
  11. Initialization script hive-schema-2.1.1.derby.sql
  12. Initialization script completed
  13. schemaTool completed
 

验证是否安装Hive成功

 
  1. hadoop@mutex-dl:~$ echo $HIVE_HOME
  2. /usr/local/apache-hive-2.1.0-bin
  3. hadoop@mutex-dl:~$ $HIVE_HOME/bin/hive
  • 可能出现的问题1

Exception in thread "main" java.lang.RuntimeException: Couldn't create directory {hive.session.id}_resources

解决方法: 修改hive-site.xml, 将原先的system:java.io.tmpdir这一行配置注释掉,然后修改为以下所示/user/hive/tmp/

 
  1. <property>
  2. <name>hive.downloaded.resources.dir</name>
  3. <!--
  4. <value>${system:java.io.tmpdir}/${hive.session.id}_resources</value>
  5. -->
  6. <value>/user/hive/tmp/${hive.session.id}_resources</value>
  7. <description>Temporary local directory for added resources in the remote file system.</description>
  8. </property>

尤其要注意,这里的/user/hive/tmp/,并非是HDFS文件系统下面的,而是hadoop用户的本地目录,本人一开始认为是HDFS文件系统下的目录,造成没有权限新建目录,问题和StackOverflow上面这个问题一样,想看具体细节的可以参考

  • 可能出现的问题2

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

解决方法:修改 hive-site.xml,将下面注释的行修改为/tmp/mydir,这个也是Hadoop用户的本地目录,而非HDFS文件系统目录.

 
  1. <property>
  2. <name>hive.exec.local.scratchdir</name>
  3. <!--
  4. <value>${system:java.io.tmpdir}/${system:user.name}</value>
  5. -->
  6. <value>/tmp/mydir</value>
  7. <description>Local scratch space for Hive jobs</description>
  8. </property>
 

Hive CLI:

修改完以上的问题,我们就可以启动Hive了

 
  1. hadoop@mutex-dl:/usr/local/apache-hive-2.1.1-bin/bin$ hive
  2. SLF4J: Class path contains multiple SLF4J bindings.
  3. SLF4J: Found binding in [jar:file:/usr/local/apache-hive-2.1.1-bin/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
  4. SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
  5. SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
  6. SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
  7. Logging initialized using configuration in jar:file:/usr/local/apache-hive-2.1.1-bin/lib/hive-common-2.1.1.jar!/hive-log4j2.properties Async: true
  8. Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
 
  1. hive> show tables;
  2. OK
  3. Time taken: 4.603 seconds

 

其他错误

如果在 initSchema 的时候出现以下错误

 
  1. hadoop@mutex-dl:/usr/local/apache-hive-2.1.1-bin/bin$ schematool -dbType mysql -initSchema
  2. SLF4J: Class path contains multiple SLF4J bindings.
  3. SLF4J: Found binding in [jar:file:/usr/local/apache-hive-2.1.1-bin/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
  4. SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
  5. SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
  6. SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
  7. Metastore connection URL: jdbc:derby:;databaseName=metastore_db;create=true
  8. Metastore Connection Driver : org.apache.derby.jdbc.EmbeddedDriver
  9. Metastore connection User: APP
  10. Starting metastore schema initialization to 2.1.0
  11. Initialization script hive-schema-2.1.0.mysql.sql
  12. Error: Syntax error: Encountered "<EOF>" at line 1, column 64. (state=42X01,code=30000)
  13. org.apache.hadoop.hive.metastore.HiveMetaException: Schema initialization FAILED! Metastore state would be inconsistent !!
  14. Underlying cause: java.io.IOException : Schema script failed, errorcode 2
  15. Use --verbose for detailed stacktrace.
  16. *** schemaTool failed ***

解决的办法就是删除所有目录下的metastore_db目录,典型的如:

 
  1. /usr/local/apache-hive-2.1.1-bin/bin
  2. /usr/local/apache-hive-2.1.1-bin/conf
  3. /usr/local/apache-hive-2.1.1-bin/scripts/metastore/upgrade/mysql

删除以上目录以后,再执行schematool -dbType mysql -initSchema即可.

 

附注

参考文章: Apache Hadoop : Hive 2.1.0 install on Ubuntu 16.04

搭建Hive 2.1.1 基于Hadoop 2.6.1 和 Ubuntu 16.0.4 记录的更多相关文章

  1. Hive和SparkSQL:基于 Hadoop 的数据仓库工具

    Hive 前言 Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的 SQL 查询功能,将类 SQL 语句转换为 MapReduce 任务执行. ...

  2. Hive和SparkSQL: 基于 Hadoop 的数据仓库工具

    Hive: 基于 Hadoop 的数据仓库工具 前言 Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的 SQL 查询功能,将类 SQL 语句转 ...

  3. 大数据之路week07--day05 (一个基于Hadoop的数据仓库建模工具之一 HIve)

    什么是Hive? 我来一个短而精悍的总结(面试常问) 1:hive是基于hadoop的数据仓库建模工具之一(后面还有TEZ,Spark). 2:hive可以使用类sql方言,对存储在hdfs上的数据进 ...

  4. ubuntu18.04搭建hive

    hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行. 其优点是学习成本低,可以通过 ...

  5. 基于Ubuntu Hadoop的群集搭建Hive

    Hive是Hadoop生态中的一个重要组成部分,主要用于数据仓库.前面的文章中我们已经搭建好了Hadoop的群集,下面我们在这个群集上再搭建Hive的群集. 1.安装MySQL 1.1安装MySQL ...

  6. 基于伪分布式Hadoop搭建Hive平台详细教程

    一.搭建环境的前提条件 环境:Linux系统 Hadoop-2.6.0 MySQL 5.6 apache-hive-2.3.7 这里的环境不一定需要和我一样,基本版本差不多都ok的,所需安装包和压缩包 ...

  7. 【hbase0.96】基于hadoop搭建hbase的心得

    hbase是基于hadoop的hdfs框架做的分布式表格存储系统,所谓表格系统就是在k/v系统的基础上,对value部分支持column family和column,并支持多版本读写. hbase的工 ...

  8. 基于hadoop的数据仓库工具:Hive概述

    Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行.其优点是学习成本低,可以通过类 ...

  9. Hive -- 基于Hadoop的数据仓库分析工具

    Hive是一个基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库 ...

随机推荐

  1. C++ 写的地图控件,支持google 百度 在线离线地图

    C++处理google  百度地图在网上查阅了很多都是通过浏览器方式显示地图信息, 跟我目前项目很不符合, 所以仔细研究了一下C++方式显示地图.通过地图投影以及墨卡托投影,在通过平面地图计算经纬度. ...

  2. 20155229 2016-2017-2 《Java程序设计》第六周学习总结

    20155229 2016-2017-2 <Java程序设计>第六周学习总结 教材学习内容总结 第十章 Java中,输入串流代表对象为java.io.InputStream,输出串流代表对 ...

  3. centos重启redis后,数据丢失

    编辑/etc/sysctl.conf ,改vm.overcommit_memory=1, 然后sysctl -p 使配置文件生效 T

  4. ZOJ3545 Rescue the Rabbit

    分析 未知定长串中不同已知模板串的出现次数问题,一般做法是AC自动机上dp. 考虑背包,\(dp(i,j,k)\)表示当前串长为\(i\),在AC自动机上对应节点\(j\),已匹配的模板串的状态为\( ...

  5. 开源泛域名服务xip.io部署试用

    xip.io 是一个很方便的泛域名服务,类似的有一个xip.name 的开源实现 下载 go get github.com/peterhellberg/xip.name 启动 二进制包在GOPATH/ ...

  6. j2ee使用struts实现用户的登陆及注冊

    用户名: 密码: <%-- 使用struts标签 --%> <%-- --%>

  7. k最邻近算法——加权kNN

    加权kNN 上篇文章中提到为每个点的距离增加一个权重,使得距离近的点可以得到更大的权重,在此描述如何加权. 反函数 该方法最简单的形式是返回距离的倒数,比如距离d,权重1/d.有时候,完全一样或非常接 ...

  8. AppBox下调用HighCharts画曲线

    例子见本博文件下载. 注意                xAxis: {                    categories: [<%= xAxisCategories %>], ...

  9. 消息中间件 ActiveMQ的简单使用

    一.AactiveMQ的下载和安装 1. 下载ActiveMQ 地址:http://activemq.apache.org/activemq-5152-release.html 我这里下载的是wind ...

  10. Angular 4 组件间的通信

    一.输入属性(父组件与子组件通信) 1. 创建工程 ng new demo1 2.创建order组件 ng g component order 3. 在order组件里定义输入属性 order组件的h ...