Hive——章(安装与配置)

2020-07-01 00:00:00 数据 命令 节点 数据仓库 海量
基础知识:
  • Hive简介

  1. Hive 是一个基于Hadoop开源数据仓库工具,用于存储和处理海量结构化数据。 它把海量数据存储于 hadoop 文件系统,而不是数据库,但提供了一套类数据库的数据存储和处理机制,并采用 HQL (类 SQL )语言对这些数据进行自动化管理和处理。我们可以把 Hive 中海量结构化数据看成一个个的表,而实际上这些数据是分布式存储在 HDFS 中的。 Hive 经过对语句进行解析和转换,终生成一系列基于 hadoop 的 map/reduce 任务,通过执行这些任务完成数据处理。
  2. Hive 诞生于 facebook 的日志分析需求,面对海量的结构化数据, Hive 以较低的成本完成了以往需要大规模数据库才能完成的任务,并且学习门槛相对较低,应用开发灵活而高效。


  • Hive特点
  1. 不想用程序语言开发MapReduce的朋友比如DB们,熟悉SQL的朋友可以使用Hive开离线的进行数据处理与分析工作。
  2. Hive现在适合在离线下进行数据的操作,就是说不适合在挂在真实的生产环境中进行实时的在线查询或操作,因为一个字“慢”。
  3. 起源于FaceBook,Hive在Hadoop中扮演数据仓库的角色。建立在Hadoop集群的顶层,对存储在Hadoop群上的数据提供类SQL的接口进行操作。你可以用 HiveQL进行select,join,等等操作。
  4. 如果你有数据仓库的需求并且你擅长写SQL并且不想写MapReduce jobs就可以用Hive代替。

相关下载:

  • apache-hive-1.2.1-bin.tar.gz(下载地址)



1.1、Hive安装与配置


1、准备


在部署节点中选择一个数据节点,作为hive用的节点。(本实验使用slave1


注意:jdk选择jdk-8u112-linux-x64.tar.gz



2、安装MySQL服务器

相关命令:

  1. sudo apt-get install mysql-server

3、安装MySQL客户端

相关命令:

  1. sudo apt-get install mysql-client
  2. sudo apt-get install libmysqlclient-dev

4、数据库操作


1)安装hive,之前,先在mysql上创建一个hive,数据库,并在hive数据库中建立表user

相关命令:

  1. mysql -u root -p
  2. create database hive;
  3. use hive;
  4. create table user(Host char(20),User char(10),Password char(20));

2)进入mysql,赋予权限,密码自己改

相关命令:

  1. insert into user(Host,User,Password) values("localhost","hive","hive");
  2. FLUSH PRIVILEGES;
  3. GRANT ALL PRIVILEGES ON *.* TO 'hive'@'localhost' IDENTIFIED BY 'hive';
  4. FLUSH PRIVILEGES;

5、解压hive安装包之后,配置环境

相关命令与内容:

  1. sudo tar -xzvf apache-hive-1.2.1-bin.tar.gz -C /home/hadoop
  2. sudo gedit /etc/profile
  3. ------------------------------内 容------------------------------
  4. #hive
  5. export HIVE_HOME=/home/hadoop/apache-hive-1.2.1-bin
  6. export PATH=$PATH:$HIVE_HOME/bin
  7. ------------------------------内 容------------------------------
  8. source /etc/profile

6、修改hive/conf下的几个template模板

相关命令:

  1. sudo cp hive-env.sh.template hive-env.sh
  2. sudo cp hive-default.xml.template hive-site.xml

7、配置hive-env.sh文件,指定HADOOP_HOME

相关内容:

  1. HADOOP_HOME=/usr/local/hadoop

8、修改hive-site.xml文件,指定MySQL数据库驱动、数据库名、用户名及密码

相关内容:

  1. <property>
  2. <name>javax.jdo.option.ConnectionURL</name>
  3. <value>jdbc:mysql://localhost:3306/hive_metadata?createDatabaseIfNotExist=true</value>
  4. <description>JDBC connect string for a JDBC metastore</description>
  5. </property>
  6. <property>
  7. <name>javax.jdo.option.ConnectionDriverName</name>
  8. <value>com.mysql.jdbc.Driver</value>
  9. <description>Driver class name for a JDBC metastore</description>
  10. </property>

  11. <property>
  12. <name>javax.jdo.option.ConnectionUserName</name>
  13. <value>hive</value>
  14. <description>Username to use against metastore database</description>
  15. </property>

  16. <property>
  17. <name>javax.jdo.option.ConnectionPassword</name>
  18. <value>hive</value>
  19. <description>password to use against metastore database</description>
  20. </property>

  21. <property>
  22. <name>hive.exec.local.scratchdir</name>
  23. <value>/home/hive/scratchdir</value>
  24. <description>Local scratch space for Hive jobs</description>
  25. </property>

  26. <property>
  27. <name>hive.downloaded.resources.dir</name>
  28. <value>/home/hive/resourcesdir</value>
  29. <description>Temporary local directory for added resources in the remote file system.</description>
  30. </property>

  31. <property>
  32. <name>hive.querylog.location</name>
  33. <value>/home/hive/querylog</value>
  34. <description>Location of Hive run time structured log file</description>
  35. </property>

  36. <property>
  37. <name>hive.server2.logging.operation.log.location</name>
  38. <value>/home/hive/operation_logs</value>
  39. <description>Top level directory where operation logs are stored if logging functionality is enabled</description>
  40. </property>

9、创建目录并更改用户

相关命令:

  1. sudo mkdir -p /home/hive/scratchdir
  2. sudo mkdir -p /home/hive/resourcesdir
  3. sudo mkdir -p /home/hive/querylog
  4. sudo mkdir -p /home/hive/operation_logs
  5. sudo chown -R hadoop.hadoop /home/hive
  6. sudo chown -R hadoop.hadoop /home/hadoop/apache-hive-1.2.1-bin


10、修改hive/bin下的hive-config.sh文件,设置JAVA_HOME,HADOOP_HOME

相关内容:

  1. export JAVA_HOME=/usr/lib/jdk1.8.0_112/
  2. export HADOOP_HOME=/usr/local/hadoop
  3. export HIVE_HOME=/home/hadoop/apache-hive-1.2.1-bin

11、下载mysql-connector-java-5.1.27-bin.jar文件,并放到$HIVE_HOME/lib目录下


12、在HDFS中创建/tmp和/user/hive/warehouse并设置权限(master节点)

相关命令:

  1. hadoop fs -mkdir /tmp
  2. hadoop fs -mkdir -p /user/hive/warehouse
  3. hadoop fs -chmod g+w /tmp
  4. hadoop fs -chmod g+w /user/hive/warehouse

13、启动hive(注意:可以在/etc/profile或/etc/bash.bashrc配置,重启计算机后直接hive)

相关命令:

  1. cd $HIVE_HOME/bin
  2. ./hive

报错:[ERROR] Terminal initialization failed; falling back to unsupported

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

hadoop的版本是2.6.0,hive的版本是1.2.1,$HIVE_HOME/lib目录下的jline-2.12.jar比$HADOOP_HOME/share/hadoop/yarn/lib下的jline-0.9.94.jar版本高,版本不一致导致。

解决方法:拷贝hive中的jline-2.12.jar到$HADOOP_HOME/share/hadoop/yarn/lib下,删除jline-0.9.94.jar,并重启hadoop即可。

相关文章