基于Ubuntu Hadoop的群集搭建Hive

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Hive是Hadoop生态中的一个重要组成部分,主要用于数据仓库。前面的文章中我们已经搭建好了Hadoop的群集,下面我们在这个群集上再搭建Hive的群集。 1.安装MySQL 1.1安装MySQL Server 在Ubuntu下面安装MySQL的Server很简单,只需要运行: sudo apt-get install mysql-server 系统会把MySQL下载并安装好。

Hive是Hadoop生态中的一个重要组成部分,主要用于数据仓库。前面的文章中我们已经搭建好了Hadoop的群集,下面我们在这个群集上再搭建Hive的群集。

1.安装MySQL

1.1安装MySQL Server

在Ubuntu下面安装MySQL的Server很简单,只需要运行:

sudo apt-get install mysql-server

系统会把MySQL下载并安装好。这里我们可以把MySQL安装在master机器上。

安装后需要配置用户名密码和远程访问。

1.2配置用户名密码

首先我们以root身份登录到mysql服务器:

sudo mysql -u root

然后修改root的密码,并允许root远程访问:

GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY "123456";

我们这里还可以为hive建立一个用户,而不是用root用户:

GRANT ALL PRIVILEGES ON *.* TO hive@'%' IDENTIFIED BY "hive";

运行完成后quit命令即可退出mysql的命令行模式。

1.3配置远程访问

默认情况下,MySQL是只允许本机访问的,要允许远程机器访问需要修改配置文件

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

找到bind-address的配置部分,然后改为:

bind-address          = 0.0.0.0

保存,重启mysql服务

sudo service mysql restart

重启完成后,我们可以在Windows下,用MySQL的客户端连接master上的MySQL数据库,看是否能够远程访问。

2.下载并配置Hive

2.1下载Hive

首先我们到官方网站,找到Hive的下载地址。http://www.apache.org/dyn/closer.cgi/hive/ 会给出一个建议的网速快的下载地址。

然后在master服务器上,wget下载hive的编译好的文件,我现在最新版是Hive 2.1.1 :

wget http://mirror.bit.edu.cn/apache/hive/hive-2.1.1/apache-hive-2.1.1-bin.tar.gz

下载完成后,解压这个压缩包

tar xf apache-hive-2.1.1-bin.tar.gz

按之前Hadoop的惯例,我们还是把Hive安装到/usr/local目录下吧,所以移动Hive文件:

sudo mv apache-hive-2.1.1-bin /usr/local/hive

2.2配置环境变量

sudo vi /etc/profile

增加如下配置:

export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:/usr/local/hive/lib

2.3配置hive-env.sh

所有Hive的配置是在/usr/local/hive/conf目录下,进入这个目录,我们需要先基于模板新建hive-env.sh文件:
cp hive-env.sh.template hive-env.sh
vi hive-env.sh
指定Hadoop的路径,增加以下行:
HADOOP_HOME=/usr/local/hadoop

2.4配置hive-site.xml

cp hive-default.xml.template hive-site.xml
vi hive-site.xml
首先增加mysql数据库的连接配置:
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://master:3306/hive?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>
然后需要修改临时文件夹的路径,找到以下2个配置,并改为正确的路径:
 <property> 
 <name>hive.exec.local.scratchdir</name>
 <value>/home/hduser/iotmp</value>
 <description>Local scratch space for Hive jobs</description>
 </property>
 <property>
 <name>hive.downloaded.resources.dir</name>
 <value>/home/hduser/iotmp</value>
 <description>Temporary local directory for added resources in the remote file system.</description>
 </property>

这里因为我当前用户是hduser,所以我在hduser的目录下创建一个iotmp文件夹,并授权:

mkdir -p /home/hduser/iotmp 
chmod -R 775 /home/hduser/iotmp

2.5修改hive-config.sh

进入目录/usr/local/hive/bin
vi hive-config.sh
在该文件的最前面加入以下配置:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 
export HADOOP_HOME=/usr/local/hadoop 
export HIVE_HOME=/usr/local/hive

2.6下载MySQL JDBC驱动

去MySQL的官网,https://dev.mysql.com/downloads/connector/j/  下载JDBC驱动到master服务器上。

wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.40.tar.gz

下载完后解压

tar xf mysql-connector-java-5.1.40.tar.gz

然后进入解压后的目录,把jar包复制到Hive/lib目录下面

cp mysql-connector-java-5.1.40-bin.jar /usr/local/hive/lib/

2.7在HDFS中创建目录和设置权限

启动Hadoop,在Hadoop中创建Hive需要用到的目录并设置好权限:

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

2.8初始化meta数据库

进入/usr/local/hive/lib目录,初始化Hive元数据对应的MySQL数据库:
schematool -initSchema -dbType mysql

3.使用Hive

在命令行下,输入hive命令即可进入Hive的命令行模式。我们可以查看当前有哪些数据库,哪些表:
show databases;
show tables;
关于hive命令下有哪些命令,具体介绍,可以参考官方文档:https://cwiki.apache.org/confluence/display/Hive/Home

3.1创建表

和普通的SQL创建表没有太大什么区别,主要是为了方便,我们设定用\t来分割每一行的数据。比如我们要创建一个用户表:
create table Users (ID int,Name String) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

3.2插入数据

是insert语句可以插入单条数据:
insert into Users values(1,'Devin');
如果要导入数据
我们在Ubuntu下创建一个name.txt文件,然后编辑其中的内容,添加如下内容:

2       Edward
3       Mindy
4       Dave
5       Joseph
6       Leo

列直接我是用Tab隔开的。

如果想把这个txt文件导入hive的Users 表,那么只需要在hive中执行:

LOAD DATA LOCAL INPATH '/home/hduser/names.txt' into table Users ;

3.3查询数据

仍然是sql语句:
select * from Users ;
当然我们也可以跟条件的查询语句:
select * from Users where Name like 'D%';

3.4增加一个字段

比如我们要增加生日这个字段,那么语句为:
alter table Users add columns (BirthDate date);

3.5查询表定义

我们看看表的结构是否已经更改,查看Users表的定义:
desc Users;

3.6其他

另外还有重名了表,删除表等,基本也是SQL的语法:
alter table Users rename to Student;
删除一个表中的所有数据:
truncate table Student;
【另外需要注意,Hive不支持update和delete语句。似乎只有先truncate然后在重新insert。】
【本文章出自 博客园深蓝居,转载请注明作者出处,如果您觉得博主的文章对您有很大帮助,欢迎点击右侧打赏按钮对博主进行打赏。】
打个招聘广告,博主正在主导开发一个跨链区块链项目:PalletOne,一直在招Go程序员,待遇丰厚,坐标北京酒仙桥,希望有识之士加入!
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
分布式计算 Ubuntu Hadoop
在Ubuntu下搭建Spark群集
在前一篇文章中,我们已经搭建好了Hadoop的群集,接下来,我们就是需要基于这个Hadoop群集,搭建Spark的群集。由于前面已经做了大量的工作,所以接下来搭建Spark会简单很多。 首先打开三个虚拟机,现在我们需要安装Scala,因为Spark是基于Scala开发的,所以需要安装Scala。
912 0
|
分布式计算 Ubuntu Hadoop
在Ubuntu上搭建Hadoop群集
前面我搭建的Hadoop都是单机伪分布式的,并不能真正感受到Hadoop的最大特点,分布式存储和分布式计算。所以我打算在虚拟机中同时开启3台机器,实现分布式的Hadoop群集。 1.准备3台Ubuntu Server 1.1复制出3台虚拟机 我们可以用之前编译和安装好Hadoop的虚拟机作为原始版本,在VirtualBox中复制三台新的虚拟机出来,也可以完全重新安装一台全新的Ubuntu Server,然后在VirtualBox中复制出2台,就变成了3台虚拟机。
1125 0
|
6月前
|
存储 分布式计算 Hadoop
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
289 79
|
11月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
438 6
|
11月前
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
228 2
|
9月前
|
存储 分布式计算 大数据
Flume+Hadoop:打造你的大数据处理流水线
本文介绍了如何使用Apache Flume采集日志数据并上传至Hadoop分布式文件系统(HDFS)。Flume是一个高可用、可靠的分布式系统,适用于大规模日志数据的采集和传输。文章详细描述了Flume的安装、配置及启动过程,并通过具体示例展示了如何将本地日志数据实时传输到HDFS中。同时,还提供了验证步骤,确保数据成功上传。最后,补充说明了使用文件模式作为channel以避免数据丢失的方法。
415 4
|
10月前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
448 2
|
10月前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
396 1
|
11月前
|
存储 分布式计算 资源调度
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
241 5

相关实验场景

更多