当前位置: 代码迷 >> 综合 >> 初识Hive,Zookeeper
  详细解决方案

初识Hive,Zookeeper

热度:93   发布时间:2023-10-13 14:00:01.0

Hive简介

Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据。它架构在Hadoop之上,总归为大数据,并使得查询和分析方便。并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。
术语“大数据”是大型数据集,其中包括体积庞大,高速,以及各种由与日俱增的数据的集合。使用传统的数据管理系统,它是难以加工大型数据。因此,Apache软件基金会推出了一款名为Hadoop的解决大数据管理和处理难题的框架。

Zookeeper简介

Zookeeper 是为分布式应用程序提供高性能协调服务的工具集合,也是Google的Chubby一个开源的实现,是Hadoop 的分布式协调服务。它包含一个简单的原语集5,分布式应用程序可以基于它实现配置维护、命名服务、分布式同步、组服务等。Zookeeper可以用来保证数据在ZK集群之间的数据的事务性一致6。其中ZooKeeper提供通用的分布式锁服务7,用以协调分布式应用。
Zookeeper作为Hadoop项目中的一个子项目,是 Hadoop集群管理的一个必不可少的模块,它主要用来解决分布式应用中经常遇到的数据管理问题,如集群管理、统一命名服务、分布式配置管理、分布式消息队列、分布式锁、分布式协调等。在Hadoop中,它管理Hadoop集群中的NameNode,还有在Hbase中Master Election、Server 之间状态同状步等。
  Zoopkeeper 提供了一套很好的分布式集群管理的机制,就是它这种基于层次型的目录树的数据结构,并对树中的节点进行有效管理,从而可以设计出多种多样的分布式的数据管理模型。

安装Zookeeper

  • 在slave1,slave2,slave3上安装Zookeeper
yum install -y zookeeper-server
  • 3台主机分别创建/usr/lib/tmpfile.d/zk.conf:
d /var/run/zookeeper 0775 zookeeper zookeeper -
  • 创建/var/run/zookeeper
# systemd-tmpfiles --create
  • 分别在3台服务器上初始化ID(id=1,2,3)
# echo ID > /var/lib/zookeeper/myid

配置zoo.cfg

  • 在3台Zookeeper服务器上配置/etc/zookeeper/conf/zoo.cfg:
server.1=slave1:2888:3888
server.2=slave2:2888:3888
server.3=slave3:2888:3888

分别启动3台zookeeper

  • 创建启动服务文件:
# cp /usr/hdp/2.6.1.0-129/zookeeper/usr/lib/systemd/system/zookeeper-service /usr/lib/systemd/system
  • 启动服务
# systemctl start zookeeper-server
  • 激活服务
# systemctl enable zookeeper-server

安装hive2和mysql

  • 安装hive2
# yum install -y hive2
  • 安装mysql
# yum install -y mysql-server
  • 安装mysql驱动
# rpm -ivh mysql-connector-java-5.1.37-1

激活mysql驱动

  • 为hive准备jdbc驱动
# cp ln -s /usr/share/java/mysql-connector-java.jar /usr/hdp/2.6.1.0-129/hive2/lib

配置hive2

  • /etc/hive/conf/hive-site.xml中添加配置项
name value
javax.jdo.option.ConnectionURL jdbc.mysql://slave1:3306/metastor
javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver
javax.jdo.option.ConnectionUserName hiveuser
javax.jdo.option.ConnectionPasswd passwd
datanucleus.autoCreateSchema false
datanucleus.fixedDatastore true
datanucleus.autoStarMechanism SchemaTable
hive.metastor.uris thrift://< IP_of_Slave1>:9083
hive.support.concurrency true
hive.zookeeper.quorum slave1,slave2,slave3

准备HDFS目录

  • 清空可能遗留的垃圾文件
# su - hdfs
$ hadoop fs -rm -r /tmp/hive
$ hadoop fs -rm -r /user/hive
  • 创建hive数据仓库
$ hadoop fs -mkdri/tmp
$ hadoop fs -chmod 1777 /tmp
$ hadoop fs -mkdri -p /user/hive/warehouse
$ hadoop fs -chown -R hive:hive /user/hive
$ hadoop fs -chmod 1777 /user/hive/warehouse

启动mysql服务器

  • 在slave1上启动mysql
# systemctl start mysqld
  • 链接mysql服务器
$ mysql -u root -h localhost

创建hive数据库账号


> create database metastore;
> use metastore;
> create user 'hiveuser'@'%' identified by 'passwd';
> revoke all privileges,grant option from 'hiveuser'@'%';
> grant selsect,insert,update,selsete,lock tables,exexute.create,alter on metastore.* to 'hiveuser'@'%'

初始化metastore

  • 清空可能出现的垃圾文件
# rm -rf /var/lib/hive/*
# rm -rf /var/lib/hive2/*
  • 删除可能存在的冲突配置文件
# mv /etc/hive2/ /etc/hive2.bak
# cp /etc/hive/ /etc/hive2
  • 在slave1上创建metastore
# schematool -dbType mysql -initSchema
  • 从mysql控制台上确认表成功
mysql> show tables

启动hive server2

  • 切换到hadoop
  • 开启远程metastore服务
$ /...(hive2目录)/bin/hive --service metastore
$ /...(hive2目录)/bin/hiveserver2
  • 连接服务器
$ /...(hive2目录)/bin/beeline -u jdbc:hive2://slave1:10000 -n hive

结果如下:
初识Hive,Zookeeper

用到的知识

  • hive教程
  • zookeeper系列
  相关解决方案