一般Hive依赖关系型数据库Mysql,故先安装Mysql

$:  yum install mysql-server mysql-client [yum安装]
$:  /etc/init.d/mysqld start  [启动mysql服务]
$:  mysql  [登录mysql客户端]
mysql> create database hive;

安装配置Hive

$:  tar zvxf apache-hive-2.1.1-bin.tar
1. 配置环境变量
export HIVE_HOME=/usr/local/apache-hive-2.1.1-bin
export PATH=$PATH:${HIVE_HOME}/bin
2. 配置Hive的基本信息
$: cd /home/hadoop/apache-hive-2.1.1-bin/conf
$: cp hive-default.xml.template hive-site.xml                     #默认配置
$: cp hive-env.sh.template hive-env.sh                           #环境配置文件
$: cp hive-exec-log4j.properties.template hive-exec-log4j.properties   #exec默认配置
$: cp hive-log4j.properties.template hive-log4j.properties           #log默认配置
3. 编辑hive-env.sh,为了方便,直接在最后加上以下信息:
export JAVA_HOME=/home/hadoop/jdk1.8.0_144
export HADOOP_HOME=/home/hadoop/hadoop-2.7.3
export HIVE_HOME=/home/hadoop/apache-hive-2.1.1-bin
export HIVE_CONF_DIR=/home/hadoop/apache-hive-2.1.1-bin/conf

hive-site.xml配置,这个文件较大,只配置name和以下对应的即可,其他信息可以不用管

<property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://127.0.0.1:3306/metastore?createDatabaseIfNotExist=true</value>
      <description>the URL of the MySQL database</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>hive</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>hive</value>
</property>

这里主要配置与mysql的驱动连接等,类似java的JDBC,一定要保证配置正确

4. Hive是将HDFS作为数据的文件系统,所以需要创建一些存储目录并赋权限
hadoop fs -mkdir /home/hive/log
hadoop fs -mkdir /home/hive/warehouse
hadoop fs -mkdir /home/hive/tmp
hadoop fs -chmod g+w /home/hive/log
hadoop fs -chmod g+w /home/hive/warehouse
hadoop fs -chmod g+w /home/hive/tmp
5. 将JDBC 驱动 mysql-connect-java-xxx.jar 复制至$HIVE_HOME/lib目录下
6. 初始化数据库
schematool -initSchema -dbType mysql

在这一步通常会报错,

[root@slave1 bin]# schematool -initSchema -dbType mysql
which: no hbase in (/home/hadoop/sqoop-1.4.6/bin:/home/hadoop/apache-hive-2.1.1-bin/bin:/home/hadoop/hadoop-2.7.3/bin:/home/hadoop/jdk1.8.0_144/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/hadoop/apache-hive-2.1.1-bin/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/hadoop/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Metastore connection URL:    jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8&useSSL=false
Metastore Connection Driver :    com.mysql.jdbc.Driver
Metastore connection User:   hive
Starting metastore schema initialization to 2.1.0
Initialization script hive-schema-2.1.0.mysql.sql
Error: Duplicate key name 'PCS_STATS_IDX' (state=42000,code=1061)
org.apache.hadoop.hive.metastore.HiveMetaException: Schema initialization FAILED! Metastore state would be inconsistent !!
Underlying cause: java.io.IOException : Schema script failed, errorcode 2
Use --verbose for detailed stacktrace.
*** schemaTool failed ***

总结了一下,只要按照以上步骤配置,一般报错都是在hive-site.xml配置时所配置的mysql信息和实际的不对应,所以会报错。另外如果配置好了,启动了hive的服务和客户端做了很多操作然后再关闭,再次启动初始化数据库时也会报错,这个时候最好的方法是删除掉mysql的与hive对应的数据库实例,然后新建一个相同的即可。
如果出现以下信息则是数据库的问题

java.sql.SQLException: Access denied for user 'root'@'****' (using password: YES)

这是因为mysql在验证用户登陆的时候,首先是验证host列,如果host列在验证user列,再password列,而现在按照我之前的连接语句:按照host列找到为空的那列(空匹配所有用户名),所以匹配到了这条记录,然后发现这条记录的密码为空,而我的语句里面有密码,那么就会报错。
解决方案:

mysql> use mysql;
Database changed
mysql> delete from user where user='';
Query OK, 1 row affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

出现以下信息则安装配置成功

[root@slave1 bin]# schematool -initSchema -dbType mysql
which: no hbase in (/home/hadoop/sqoop-1.4.6/bin:/home/hadoop/apache-hive-2.1.1-bin/bin:/home/hadoop/hadoop-2.7.3/bin:/home/hadoop/jdk1.8.0_144/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/hadoop/apache-hive-2.1.1-bin/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/hadoop/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Metastore connection URL:    jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8&useSSL=false
Metastore Connection Driver :    com.mysql.jdbc.Driver
Metastore connection User:   hive
Starting metastore schema initialization to 2.1.0
Initialization script hive-schema-2.1.0.mysql.sql
Initialization script completed
schemaTool completed
7. 启动hive服务和客户端并创建数据库和一张表
$: hiveserver2
$: hive
hive> create database dock;
hive> use dock;
hive> create table if not exists dock.dock_tb(
    > id varchar(64) COMMENT 'dock id',
    > md5code varchar(64) COMMENT 'dock md5 code',
    > number varchar(64) COMMENT 'dock number',
    > ip varchar(64) COMMENT 'dock ip',
    > game varchar(64) COMMENT 'dock game',
    > time varchar(64) COMMENT 'dock time',
    > day varchar(64) COMMENT 'dock day',
    > year varchar(64) COMMENT 'dock year',
    > month varchar(64) COMMENT 'dock month',
    > type varchar(64) COMMENT 'dock type')
    > COMMENT 'Description of the table'
    > LOCATION '/data/wscn/dock_test_log/20171101/EtlResult/dockClick';

可以看到dock_tb表以HDFS上/data/wscn/dock_test_log/20171101/EtlResult/dockClick下的文件作为数据源和存储路径。

安装配置sqoop

1. 解压并配置环境变量
$: tar –zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
$: mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop-1.4.6
$: export SQOOP_HOME=/home/hadoop/sqoop-1.4.6
$: export PATH=$PATH:${ SQOOP_HOME }/bin
2. 配置基本信息
$:cd /home/hadoop/sqoop-1.4.6/conf

如下配置,默认是被注释的

#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/home/hadoop/hadoop-2.7.3

#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/home/hadoop/hadoop-2.7.3

#set the path to where bin/hbase is available
#export HBASE_HOME=

#Set the path to where bin/hive is available
export HIVE_HOME=/home/hadoop/apache-hive-2.1.1-bin
3. 配置完成后测试
$: sqoop help

如果出现以下信息证明安装配置成功

Warning: /home/hadoop/sqoop-1.4.6/bin/../../hbase does not exist! HBase imports will fail.
Please set $HBASE_HOME to the root of your HBase installation.
Warning: /home/hadoop/sqoop-1.4.6/bin/../../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /home/hadoop/sqoop-1.4.6/bin/../../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
Warning: /home/hadoop/sqoop-1.4.6/bin/../../zookeeper does not exist! Accumulo imports will fail.
Please set $ZOOKEEPER_HOME to the root of your Zookeeper installation.
17/11/11 02:26:22 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6
usage: sqoop COMMAND [ARGS]

Available commands:
  codegen            Generate code to interact with database records
  create-hive-table  Import a table definition into Hive
  eval               Evaluate a SQL statement and display the results
  export             Export an HDFS directory to a database table
  help               List available commands
  import             Import a table from a database to HDFS
  import-all-tables  Import tables from a database to HDFS
  import-mainframe   Import datasets from a mainframe server to HDFS
  job                Work with saved jobs
  list-databases     List available databases on a server
  list-tables        List available tables in a database
  merge              Merge results of incremental imports
  metastore          Run a standalone Sqoop metastore
  version            Display version information

See 'sqoop help COMMAND' for information on a specific command.

利用sqoop将HDFS上格式化后的数据导入到mysql,前提是mysql事先有对应的表

sqoop export --connect jdbc:mysql://127.0.0.1:3306/hive --username hive --password hive --table dock_tb1 --export-dir hdfs://127.0.0.1:9000/data/wscn/dock_test_log/20171101/EtlResult/dockClick --input-fields-terminated-by '\001'

利用sqoop将mysql的数据导入到hdfs

$: sqoop import --connect jdbc:mysql://127.0.0.1:3306/hive --username hive --password hive --table dock_tb --target-dir /data/wscn/dock_test_log/20171101/EtlResult/dockClick1 -m 1

具体的sqoop命令参照http://blog.csdn.net/whiteForever/article/details/52609422

Hadoop生态组件Hive,Sqoop安装及Sqoop从HDFS/hive抽取数据到关系型数据库Mysql的更多相关文章

  1. Hadoop生态组件的WebUI地址

    ================================Impala 相关================================ Impala的常用端口: jdbc/ODBC 端口: ...

  2. 【搜索引擎】Solr最新安装以及通过关系型数据库(MySQL,Oracle,PostgreSQL)导入数据

    版本号 最新的solr版本 : Solr 8.1.1下载地址:https://lucene.apache.org/solr/downloads.html solr-8.1.0.tgz for Linu ...

  3. hadoop(八) - sqoop安装与使用

    一. sqoop安装: 安装在一台节点上就能够了. 1. 使用winscp上传sqoop 2. 安装和配置 加入sqoop到环境变量 将数据库连接驱动mysql-connector-5.1.8.jar ...

  4. Hive学习之七《 Sqoop import 从关系数据库抽取到HDFS》

    一.什么是sqoop Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql.postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 :MySQL ...

  5. sqoop 安装使用

    安装配置: 1.将sqoop-1.4.4.tar.gz 上传到/usr/local/ 2.解压 tar -zxvf sqoop-1.4.4.tar.gz 3.配置 vim /etc/profile 在 ...

  6. (MySQL里的数据)通过Sqoop Import HDFS 里 和 通过Sqoop Export HDFS 里的数据到(MySQL)(五)

    下面我们结合 HDFS,介绍 Sqoop 从关系型数据库的导入和导出 一.MySQL里的数据通过Sqoop import HDFS 它的功能是将数据从关系型数据库导入 HDFS 中,其流程图如下所示. ...

  7. Ubuntu16.04下Hive的安装与配置

    一.系统环境 os : Ubuntu 16.04 LTS 64bit jdk : 1.8.0_161 hadoop : 2.6.4mysql : 5.7.21 hive : 2.1.0 在配置hive ...

  8. sqoop工具介绍(hdfs与关系型数据库进行数据导入导出)

    数据表 第一类:数据库中的数据导入到HDFS上 #数据库驱动jar包用mysql-connector-java--bin,否则有可能报错! ./sqoop import --connect jdbc: ...

  9. 如何将mysql数据导入Hadoop之Sqoop安装

    Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql.postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle , ...

随机推荐

  1. Bubble Cup 8 finals F. Bulbo (575F)

    题意: 给定初始位置,查询n次区间,每次查询前可以花费移动距离的代价来移动, 查询时需要花费当前位置到区间内最近的点的距离,求最小代价. 1<=n<=5000,1<=所有位置< ...

  2. PLC数据访问

    PLC是很多机床设备上都有的控制中心,和PLC通信是很多做工厂管理系统的必经之路. 一年前有个项目需要和PLC(西门子S200)通信,不仅读取里面的数据,还需要写数据需要控制机床的运行,当时不大了解, ...

  3. BZOJ1088: [SCOI2005]扫雷Mine

    这道题A的好莫名其妙啊2333 传送门 状压DP,枚举上一个雷的分布情况(1<<3)-1,然后和当前的分布相结合,推出下一状态. //BZOJ 1088 //by Cydiater //2 ...

  4. 【转】Maven实战(五)---两个war包的调用

    原博文出自于: http://blog.csdn.net/liutengteng130/article/details/42879803    感谢! 开篇前提   1.为什么要用两个war包的调用? ...

  5. OSS最新进度汇报(2.25)

    OSS系列最新进度情况如下:一. OSS.Social进度 1. 客服接口升级至新客服接口 2. BaseRecMsg中RecMsg字符串类型修改为xml类型 3. 添加Redis缓存注册实现,代码见 ...

  6. JavaScript学习笔记(十四)——对象

    在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...

  7. 深入理解java虚拟机_第三章(上)-----&gt;垃圾收集器与内存分配策略

    1.  前言 这一版块内容比较多,分为两篇文章来做笔记.本文讲述上半部分垃圾收集部分;下一篇文章写内存分配部分. 概述 对象已死吗? 引用技术算法 可达性分析算法 再谈引用 两次标记 回收方法区 2. ...

  8. 基于vue制作简易的柱状图

    一般很常见的柱状图,大家都想到用百度echart,如果整个项目就只绘制仅有的一个柱状图,引入echart就有点大材小用了,哈哈哈. 预览地址:https://zuobaiquan.github.io/ ...

  9. js日期格式转换的相关问题探讨

    探讨问题1: 如何将 2017年8月22日 转换成 2017-8-22 / 2017-08-22呢 '2017年8月22日'.replace(/[年月日]/g,'-'); '2017年8月22日'.m ...

  10. 06-jQuery的文档操作

    之前js中咱们学习了js的DOM操作,也就是所谓的增删改查DOM操作.通过js的DOM的操作,大家也能发现,大量的繁琐代码实现我们想要的效果.那么jQuery的文档操作的API提供了便利的方法供我们操 ...