Hive——章(安装与配置)
基础知识:
- Hive简介
- Hive 是一个基于Hadoop的开源数据仓库工具,用于存储和处理海量结构化数据。 它把海量数据存储于 hadoop 文件系统,而不是数据库,但提供了一套类数据库的数据存储和处理机制,并采用 HQL (类 SQL )语言对这些数据进行自动化管理和处理。我们可以把 Hive 中海量结构化数据看成一个个的表,而实际上这些数据是分布式存储在 HDFS 中的。 Hive 经过对语句进行解析和转换,终生成一系列基于 hadoop 的 map/reduce 任务,通过执行这些任务完成数据处理。
- Hive 诞生于 facebook 的日志分析需求,面对海量的结构化数据, Hive 以较低的成本完成了以往需要大规模数据库才能完成的任务,并且学习门槛相对较低,应用开发灵活而高效。
- Hive特点
- 不想用程序语言开发MapReduce的朋友比如DB们,熟悉SQL的朋友可以使用Hive开离线的进行数据处理与分析工作。
- Hive现在适合在离线下进行数据的操作,就是说不适合在挂在真实的生产环境中进行实时的在线查询或操作,因为一个字“慢”。
- 起源于FaceBook,Hive在Hadoop中扮演数据仓库的角色。建立在Hadoop集群的顶层,对存储在Hadoop群上的数据提供类SQL的接口进行操作。你可以用 HiveQL进行select,join,等等操作。
- 如果你有数据仓库的需求并且你擅长写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服务器
相关命令:
- sudo apt-get install mysql-server
3、安装MySQL客户端
相关命令:
- sudo apt-get install mysql-client
- sudo apt-get install libmysqlclient-dev
4、数据库操作
1)安装hive,之前,先在mysql上创建一个hive,数据库,并在hive数据库中建立表user
相关命令:
- mysql -u root -p
- create database hive;
- use hive;
- create table user(Host char(20),User char(10),Password char(20));
2)进入mysql,赋予权限,密码自己改
相关命令:
- insert into user(Host,User,Password) values("localhost","hive","hive");
- FLUSH PRIVILEGES;
- GRANT ALL PRIVILEGES ON *.* TO 'hive'@'localhost' IDENTIFIED BY 'hive';
- FLUSH PRIVILEGES;
5、解压hive安装包之后,配置环境
相关命令与内容:
- sudo tar -xzvf apache-hive-1.2.1-bin.tar.gz -C /home/hadoop
- sudo gedit /etc/profile
- ------------------------------内 容------------------------------
- #hive
- export HIVE_HOME=/home/hadoop/apache-hive-1.2.1-bin
- export PATH=$PATH:$HIVE_HOME/bin
- ------------------------------内 容------------------------------
- source /etc/profile
6、修改hive/conf下的几个template模板
相关命令:
- sudo cp hive-env.sh.template hive-env.sh
- sudo cp hive-default.xml.template hive-site.xml
7、配置hive-env.sh文件,指定HADOOP_HOME
相关内容:
- HADOOP_HOME=/usr/local/hadoop
8、修改hive-site.xml文件,指定MySQL数据库驱动、数据库名、用户名及密码
相关内容:
- <property>
- <name>javax.jdo.option.ConnectionURL</name>
- <value>jdbc:mysql://localhost:3306/hive_metadata?createDatabaseIfNotExist=true</value>
- <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>hive</value>
- <description>Username to use against metastore database</description>
- </property>
- <property>
- <name>javax.jdo.option.ConnectionPassword</name>
- <value>hive</value>
- <description>password to use against metastore database</description>
- </property>
- <property>
- <name>hive.exec.local.scratchdir</name>
- <value>/home/hive/scratchdir</value>
- <description>Local scratch space for Hive jobs</description>
- </property>
- <property>
- <name>hive.downloaded.resources.dir</name>
- <value>/home/hive/resourcesdir</value>
- <description>Temporary local directory for added resources in the remote file system.</description>
- </property>
- <property>
- <name>hive.querylog.location</name>
- <value>/home/hive/querylog</value>
- <description>Location of Hive run time structured log file</description>
- </property>
- <property>
- <name>hive.server2.logging.operation.log.location</name>
- <value>/home/hive/operation_logs</value>
- <description>Top level directory where operation logs are stored if logging functionality is enabled</description>
- </property>
9、创建目录并更改用户
相关命令:
- sudo mkdir -p /home/hive/scratchdir
- sudo mkdir -p /home/hive/resourcesdir
- sudo mkdir -p /home/hive/querylog
- sudo mkdir -p /home/hive/operation_logs
- sudo chown -R hadoop.hadoop /home/hive
- sudo chown -R hadoop.hadoop /home/hadoop/apache-hive-1.2.1-bin
10、修改hive/bin下的hive-config.sh文件,设置JAVA_HOME,HADOOP_HOME
相关内容:
- export JAVA_HOME=/usr/lib/jdk1.8.0_112/
- export HADOOP_HOME=/usr/local/hadoop
- 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节点)
相关命令:
- hadoop fs -mkdir /tmp
- hadoop fs -mkdir -p /user/hive/warehouse
- hadoop fs -chmod g+w /tmp
- hadoop fs -chmod g+w /user/hive/warehouse
13、启动hive(注意:可以在/etc/profile或/etc/bash.bashrc配置,重启计算机后直接hive)
相关命令:
- cd $HIVE_HOME/bin
- ./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即可。
相关文章