Hadoop 集群安装Hive

参考: https://www.2cto.com/net/201803/731209.html

Hive 简介

概念

Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据。它架构在Hadoop之上,总归为大数据,并使得查询和分析方便

特点

它存储架构在一个数据库中并处理数据到HDFS。
• 它是专为OLAP设计。
• 它提供SQL类型语言查询叫HiveQL或HQL。
• 它是熟知,快速,可扩展和可扩展的

架构

Hadoop 集群安装Hive_第1张图片

Hadoop 集群安装Hive_第2张图片

工作原理

Hadoop 集群安装Hive_第3张图片

Hadoop 集群安装Hive_第4张图片

Hadoop 集群安装Hive_第5张图片

安装模式

Hadoop 集群安装Hive_第6张图片

相关文档资料: http://hive.apache.org/

官网下载: http://hive.apache.org/downloads.html

前置说明

  1. 安装并启动Hadoop 集群:使用hadoop-2.9.0
    https://blog.csdn.net/daoxu_hjl/article/details/85875136
  2. hive只需要在NameNode节点安装即可,可以不在datanode节点安装
  3. 以下 在本地独立模式的基础上安装: 建议选择远程模式安装mysql,步骤一样,修改url为其他节点名称、赋权语句指定%接收任何主机连接

1 下载与上传解压

1.1 下载

     https://mirrors.tuna.tsinghua.edu.cn/apache/hive/    
     选择稳定版:apache-hive-2.3.4-bin.tar.gz

1.2 上传解压

      主namenode节点hdp-01: mkdir -p /opt/hive
      通过FileZilla上传tgz安装包至hdp-01的hive目录       
      解压:cd /opt/hive && tar -zxvf apache-hive-2.3.4-bin.tar.gz

2 配置环境变量

vim ~/.bash_profile
#末尾添加环境变量
	#hive
	export HIVE_HOME=/opt/hive/apache-hive-2.3.4-bin
	export PATH=$HIVE_HOME/bin:$PATH
#立即生效
source ~/.bash_profile 	

3 Hive配置Hadoop HDFS

3.1 进入HIVE配置目录并复制模板文件

cd $HIVE_HOME/conf
cp hive-default.xml.template hive-site.xml

3.2 修改配置文件

vim hive-site.xml

#修改 属性:hive.metastore.warehouse.dir 为 /data/hive/warehouse
#修改 属性:hive.exec.scratchdir 为 /data/hive/tmp

3.3 创建配置的hdfs目录并赋权

3.2中配置的目录都是hdfs上的目录,需要单独创建

#创建warehouse目录
hdfs dfs -mkdir -p /data/hive/warehouse
hdfs dfs -chmod 777 /data/hive/warehouse
#创建tmp目录
hdfs dfs -mkdir -p /data/hive/tmp
hdfs dfs -chmod 777 /data/hive/tmp
#验证
hdfs dfs -ls /data/hive/

Hadoop 集群安装Hive_第7张图片

3.4 修改$HIVE_HOME/conf/hive-site.xml中的临时目录

  1. 将文件中的所有 ${system:java.io.tmpdir}替换成/opt/hive/apache-hive-2.3.4-bin/tmp
sed -i 's/\${system:java.io.tmpdir}/\/opt\/hive\/apache-hive-2.3.4-bin\/tmp/g' hive-site.xml
  1. 将文件中所有的${system:user.name}替换为hadoop
sed -i 's/\${system:user.name}/hadoop/g' hive-site.xml
  1. 创建上面定义的目录:
mkdir -p /opt/hive/apache-hive-2.3.4-bin/tmp

4 安装配置mysql

4.1 安装mysql

sudo yum install -y mysql

Hadoop 集群安装Hive_第8张图片

4.2 上传mysql驱动包并移动到$HIVE_HOME/lib

下载一个mysql-connector-java驱动包 mysql-connector-java-5.1.44.tar.gz,并上传解压

http://ftp.ntu.edu.tw/MySQL/Downloads/Connector-J/

tar -zxvf mysql-connector-java-5.1.44.tar.gz 

移动jar包

cp mysql-connector-java-5.1.44-bin.jar $HIVE_HOME/lib

4.3 修改hive-site.xml数据库相关配置

修改属性值:
javax.jdo.option.ConnectionURL
javax.jdo.option.ConnectionDriverName
javax.jdo.option.ConnectionUserName
javax.jdo.option.ConnectionPassword
hive.metastore.schema.verification


    javax.jdo.option.ConnectionURL
    jdbc:mysql://hdp-01:3306/hive?createDatabaseIfNotExist=true
    
      JDBC connect string for a JDBC metastore.
      To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
      For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
    
  


    javax.jdo.option.ConnectionDriverName
    com.mysql.jdbc.Driver
    Driver class name for a JDBC metastore
  



    javax.jdo.option.ConnectionUserName
    hive
    Username to use against metastore database
  


    javax.jdo.option.ConnectionPassword
    hive
    password to use against metastore database
  


    hive.metastore.schema.verification
    false
    
      Enforce metastore schema version consistency.
      True: Verify that version information stored in is compatible with one from Hive jars.  Also disable automatic
            schema migration attempt. Users are required to manually migrate schema after Hive upgrade which ensures
            proper metastore schema migration. (Default)
      False: Warn if the version information stored in metastore doesn't match with one from in Hive jars.
    
  

4.4 复制hive-env.sh模板并配置

cp $HIVE_HOME/conf/hive-env.sh.template $HIVE_HOME/conf/hive-env.sh 

vim $HIVE_HOME/conf/hive-env.sh
增加如下内容

export HADOOP_HOME=/opt/hadoop/hadoop-2.9.0
export HIVE_CONF_DIR=/opt/hive/apache-hive-2.3.4-bin/conf
export HIVE_AUX_JARS_PATH=/opt/hive/apache-hive-2.3.4-bin/lib

5 初次启动

5.1 启动mysql

sudo service mysqld start
sudo chkconfig mysqld on
sudo chkconfig --list | grep mysql

在这里插入图片描述

5.2 创建mysql账号并赋权

mysql
create user hive@'hdp-01' identified by 'hive';
grant all privileges on *.* to 'hive'@'hdp-01' with grant option;
flush privileges;

此处使用本地独立模式安装的mysql,若使用远程模式授权语句可改为:grant all privileges on . to ‘hive’@‘hdp-01’ with grant option;

5.3 初始化hive 数据库

schematool -initSchema -dbType mysql

Hadoop 集群安装Hive_第9张图片

登陆数据库查看

Hadoop 集群安装Hive_第10张图片

Hadoop 集群安装Hive_第11张图片

5.4 启动并登陆Hive

nohup hive --service metastore &
nohup hive --service hiveserver2 &
hive

Hadoop 集群安装Hive_第12张图片
问题:Caused by: java.lang.OutOfMemoryError: unable to create new native thread
原因:mysql启动了过多的线程
解决:ulimit -u 10240
https://www.cnblogs.com/zengkefu/p/5649407.html

6 测试

hive创建一张表
create table tmp_hjl_20190113_1 (id decimal(20,10),name string);

Hadoop 集群安装Hive_第13张图片

Mysql:存储Hive表的元数据

Hadoop 集群安装Hive_第14张图片

HDFS查看表对应的文件:表数据实际存储在HDFS上
在这里插入图片描述

7 常见问题

参考: https://blog.csdn.net/SunnyYoona/article/details/51648871

7.1 beeline连接失败: User: hadoop is not allowed to impersonate hive

19/01/13 17:55:09 [main]: WARN jdbc.HiveConnection: Failed to connect to hdp-01:10000
Error: Could not open client transport with JDBC Uri: jdbc:hive2://hdp-01:10000: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: hadoop is not allowed to impersonate hive (state=08S01,code=0)

解决方案:
修改Hadoop配置文件

vim /opt/hadoop/hadoop-2.9.0/etc/hadoop/core-site.xml 

  hadoop.proxyuser.hadoop.hosts
  *


  hadoop.proxyuser.hadoop.groups
  *


说明:
hadoop.proxyuser.XXX.hosts 与 hadoop.proxyuser.XXX.groups 中XXX为异常信息中User:* 中的用户名部分

 
    hadoop.proxyuser.xiaosi.hosts 
    * 
    The superuser can connect only from host1 and host2 to impersonate a user
 
 
    hadoop.proxyuser.xiaosi.groups 
    * 
    Allow the superuser oozie to impersonate any members of the group group1 and group2


重启hadoop后,重新beeline

Hadoop 集群安装Hive_第15张图片

你可能感兴趣的:(Hadoop 集群安装Hive)