前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MacOS 下hive的安装与配置

MacOS 下hive的安装与配置

作者头像
超哥的杂货铺
发布2019-12-18 10:59:31
1.4K0
发布2019-12-18 10:59:31
举报
文章被收录于专栏:超哥的杂货铺

之前的文章中我们提到了Hive是Hadoop生态系统中的重要的成员之一,允许用户使用类似SQL的方式,很方便地进行离线数据的统计分析。本节我们就在Hadoop集群的基础上进行Hive的安装与配置。

环境和软件版本说明

系统:MacOS 终端:iterms2 + zsh Hadoop: hadoop-2.6.0-cdh5.7.0.tar.gz 下载地址:http://archive.cloudera.com/cdh5/cdh/5/ Hive:hive-1.1.0-cdh5.7.0.tar.gz, 下载地址:http://archive.cloudera.com/cdh5/cdh/5/ MySQL:5.7.26 dmg镜像, 下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads

MySQL安装与配置

mac下安装MySQL有多种方式,如使用homebrew安装,使用dmg镜像安装等。这里我们采用后一种方式。与安装JDK一样,双击下载好的安装包,按照提示一步一步进行即可。中间会弹出与下图类似的提示,需要记住这个临时密码,即红框里的一串字符,在后面登录修改密码的时候会用到。

需要记录MySQL安装时的临时密码

安装成功后在系统设置里出现MySQL服务

正确安装好后,在系统设置的最下方会出现一个MySQL的服务(如果没有,将设置关闭之后重新打开试试。),点击这个图标,就可以开启MySQL的服务。

启动MySQL服务

服务开启后,我们就可以在终端里登录mysql,执行的命令为mysql -u root -p表示以root用户登录。回车后会提示输入密码,输入刚刚我们记录的临时密码,回车。正确的话,就能进入到MySQL 的命令模式下。

用临时密码登录MySQL

代码语言:javascript
复制
mysql> set password for root@localhost = password('123456');  #修改mysql密码为123456
#可以使用exit;退出后用新密码登录看是否修改成功。
show databases;#查看已经有的数据库,能正常显示说明已经安装成功。
#tips:注意这里的几行命令都是在MySQL shell中执行的,所有在mysql shell下执行的命令都以分号结尾

修改MySQL密码

至此我们安装好了MySQL。为什么需要安装MySQL呢?原因是:

默认情况下,Hive元数据保存在内嵌的Derby数据库中,只能允许一个会话连接,只适合简单的测试。实际生产环境中不使用,为了支持多用户会话,则需要一个独立的元数据库,使用MySQL作为元数据库,Hive内部对MySQL提供了很好的支持。

因此,MySQL的安装并不是必要的,但为了深入学习,我们还是选择安装。

Hive安装与配置

1.解压安装包

解压下载的hive软件包

代码语言:javascript
复制
tar -zxvf hive-1.1.0-cdh5.7.0.tar.gz -C ~/hadoop/app #与之前安装HADOOP一样,我们同样解压hive到app目录下

2.设置HIVE_HOME环境变量

代码语言:javascript
复制
cd ~/hadoop/app#切换到app目录下
cd hive-1.1.0-cdh5.7.0 #切换到hive目录下
pwd#查看当前路径,就是我们后面需要用的HIVE_HOME
vi ~/.zshrc#编辑配置文件添加HIVE_HOME
source ~/.zshrc#重启使其生效

查看HIVE_HOME的值

添加HIVE_HOME到环境变量中

参考图中对环境变量的设置,添加HIVE_HOME并重启使其生效。

3.修改hive的配置文件

我们需要修改在HIVE_HOME/conf下的两个文件,分别是hive-env.shhive-site.xml。前者需要复制hive-env.sh.template得到,后者则需要自己创建。

hive配置文件所在位置

hive-env.sh只需要修改一处,即将HADOOP_HOME补充完整即可。

修改hive-env.sh 我们使用的这个版本没有hive-site.xml的模板,我从网上找了一个,然后将自己的配置添加进去,你可以复制下面的代码,修改为自己的配置。具体配置和注释如下:

代码语言:javascript
复制
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
        <property>
                <name>javax.jdo.option.ConnectionURL</name>
                <value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true</value><!--MySQL地址metastore是元数据库的名称,需要在mysql中创建相同名字的数据库-->
        </property>
        <property>
                <name>javax.jdo.option.ConnectionDriverName</name>
                <value>com.mysql.jdbc.Driver</value><!--MySQL驱动-->
        </property>
        <property>
                <name>javax.jdo.option.ConnectionUserName</name>
                <value>root</value><!--MySQL用户名-->
        </property>
        <property>
                <name>javax.jdo.option.ConnectionPassword</name>
                <value>123456</value><!--MySQL密码-->
        </property>
</configuration>

4.在HIVE_HOME/lib文件夹下添加mysql驱动。

下载地址:https://dev.mysql.com/downloads/connector/j/5.1.html

zip包里的MySQL驱动

下载的zip包里,有一个mysql-connector文件,如图中红框所示,需要将这个文件copy到HIVE_HOME/lib下。

5.创建mysql元数据库并进行初始化

  • 首先登录MySQL,创建一个名为metastore的数据库,此处的名字需要和刚刚hive-site.xml中数据库的名称一致。用来存放hive的元数据。可以看到,刚创建的时候,metastore是空的,通过执行show tables;可以验证。

在MySQL中创建metastore表

  • 之后我们在命令行里(不是mysql shell里)执行初始化命令: schematool -initSchema -dbType mysql #注意:如果前一步没有按照说明正确放置mysql-connector文件,这里是会报错的,初始化也会失败,相应的示意图如下。

初始化失败与成功初始化成功之后,我们再来看一下metastore数据库中的表,同样执行show tables;。如下面代码所示。 mysql> show tables; +---------------------------+ | Tables_in_metastore | +---------------------------+ | BUCKETING_COLS | | CDS | | COLUMNS_V2 | | COMPACTION_QUEUE | | COMPLETED_TXN_COMPONENTS | | DATABASE_PARAMS | | DBS | | DB_PRIVS | | DELEGATION_TOKENS | | FUNCS | | FUNC_RU | | GLOBAL_PRIVS | | HIVE_LOCKS | | IDXS | | INDEX_PARAMS | | MASTER_KEYS | | NEXT_COMPACTION_QUEUE_ID | | NEXT_LOCK_ID | | NEXT_TXN_ID | | NOTIFICATION_LOG | | NOTIFICATION_SEQUENCE | | NUCLEUS_TABLES | | PARTITIONS | | PARTITION_EVENTS | | PARTITION_KEYS | | PARTITION_KEY_VALS | | PARTITION_PARAMS | | PART_COL_PRIVS | | PART_COL_STATS | | PART_PRIVS | | ROLES | | ROLE_MAP | | SDS | | SD_PARAMS | | SEQUENCE_TABLE | | SERDES | | SERDE_PARAMS | | SKEWED_COL_NAMES | | SKEWED_COL_VALUE_LOC_MAP | | SKEWED_STRING_LIST | | SKEWED_STRING_LIST_VALUES | | SKEWED_VALUES | | SORT_COLS | | TABLE_PARAMS | | TAB_COL_STATS | | TBLS | | TBL_COL_PRIVS | | TBL_PRIVS | | TXNS | | TXN_COMPONENTS | | TYPES | | TYPE_FIELDS | | VERSION | +---------------------------+ 53 rows in set (0.00 sec) 可以看到初始化之后,metastore数据库里多了好多表,这些表都与Hive密切相关,我们后面会进行深入学习。 至此,hive的配置就基本结束了。hive的启动非常简单。在任意的路径下输入hive即可。但是在此之前必须先启动HADOOP(包括HDFS和YARN)。在确保NameNode,DataNode,SecondaryNameNode,ResourceManager,NodeManager等几个进程都有之后,再启动hive,即可进入hive的命令行。

启动hive并进行简单测试hive的使用和MySQL语法很类似。如图,我们使用了几个简单的命令来测试,发现默认有一个default数据库,但是里面没有任何表。关于Hive具体的使用,例如如何创建表以及如何写入数据?hive和HDFS之间有什么联系,元数据库如何存储Hive的数据等。我们后续再来深入学习。 本文完。

以清净心看世界;

用欢喜心过生活。

超哥的杂货铺,你值得拥有~

长按二维码关注我们

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 超哥的杂货铺 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境和软件版本说明
  • MySQL安装与配置
  • Hive安装与配置
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档