建立单机版的hive

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 为了学习hive SQL,我搭建了单机版的hive,查了网上的资料,走了许多坑,总结如本文所述。

为了学习hive SQL,我搭建了单机版的hive,查了网上的资料,走了许多坑,总结如下。

安装Hive,需要先安装JDK、HadoopMySQL,最后再安装Hive。

1,安装JDK

建议安装Oracle版本的jdk8,虽然官方没有规定必须使用Oracle 版本的jdk8,但是我发现非Oracle版本的jdk或Oracle版本的jdk8以上的版本需要额外配置,网上的资料也很少。

1.1获得jdk-8u161-linux-x64.tar.gz

1.2运行

代码语言:javascript

复制

#tar -xzf jdk-8u161-linux-x64.tar.gz -C /usr/local/
# cd /usr/local/
#mv jdk1.8.0_161 java
#gedit ~/.bashrc

代码语言:javascript

复制

export JAVA_HOME=/usr/local/java
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin

代码语言:javascript

复制

# source ~/.bashrc
# java -version
ava version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

2,安装Hadoop

2.1安装并配置ssh

2.1.1安装ssh

代码语言:javascript

复制

# sudo apt-get install openssh-server

安装完成后使用命令

代码语言:javascript

复制

# ssh localhost

登录会失败

2.1.2配置ssh无密码登录

代码语言:javascript

复制

#exit                                    # 退出刚才的 ssh localhost
# cd ~/.ssh/                             # 若没有该目录,请再执行一次ssh localhost
# ssh-keygen -t rsa                      # 会有提示,都按回车就可以
# cat ./id_rsa.pub >> ./authorized_keys  # 加入授权

2.2 hadoop的安装与配置

2.2.1 hadoop下载与安装

下载hadoop-3.3.6.tar.gz

代码语言:javascript

复制

#tar -xzf hadoop-3.3.6.tar.gz -C /usr/local/
#cd /usr/local/
#mv hadoop-3.3.6 hadoop
#chown -R hadoop ./hadoop       #前一个hadoop为用户名,更改为自己的用户名即可
#gedit ~/.bashrc

代码语言:javascript

复制

export HADOOP_HOME=/usr/local/hadoop    
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin

代码语言:javascript

复制

# source ~/.bashrc
# hadoop version
Hadoop 3.3.6
Source code repository https://github.com/apache/hadoop.git -r 1be78238728da9266a4f88195058f08fd012bf9c
Compiled by ubuntu on 2023-06-18T08:22Z
Compiled on platform linux-x86_64
Compiled with protoc 3.7.1
From source with checksum 5652179ad55f76cb287d9c633bb53bbd
This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-3.3.6.jar

2.2.2 hadoop单机配置

安装后的hadoop默认为单机配置,无需其他配置即可运行。使用hadoop自带的单词统计的例子体验以下:

代码语言:javascript

复制

#cd /usr/local/hadoop
# mkdir ./input
# cp ./etc/hadoop/*.xml ./input   # 将配置文件作为输入文件
#./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+'    
# cat ./output/*                 # 查看运行结果

输出

代码语言:javascript

复制

1    dfsadn

2.2.3 hadoop单机配置

代码语言:javascript

复制

#gedit /usr/local/hadoop/etc/hadoo/core-site.xml

代码语言:javascript

复制

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

代码语言:javascript

复制

#gedit /usr/local/hadoop/etc/hadoo/hdfs-site.xml

代码语言:javascript

复制

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>
</configuration>

3)在/usr/local/hadoop下使用命令

代码语言:javascript

复制

# ./bin/hdfs namenode -format           #实现namenode的格式化

4)使得root用户可以启动hadoop

Hadoop默认是不允许root用户启动的,但是比如我们为了方便学习,可以使用root用户来启动。

代码语言:javascript

复制

# /etc/profile

代码语言:javascript

复制

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

5) 配置Hadoop JAVA_HOME

代码语言:javascript

复制

#gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh

代码语言:javascript

复制

export JAVA_HOME=/usr/local/java
export HADOOP_HOME=/usr/local/hadoop

6)

代码语言:javascript

复制

#sbin/start-dfs.sh                                #开启namenode和datanode

7)

代码语言:javascript

复制

#jps
37153 DataNode                       #DataNode
43796 Jps
37380 SecondaryNameNode              #第二个NameNode
37013 NameNode                       #NameNode

8)安装yarn(非必要)

在/usr/local/hadoop下操作

代码语言:javascript

复制

#cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
#gedit etc/hadoop/mapred-site.xml

代码语言:javascript

复制

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

9)

代码语言:javascript

复制

#gedit etc/hadoop/yarn-site.xml

代码语言:javascript

复制

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

10)启动资源管理器

代码语言:javascript

复制

#./sbin/start-yarn.sh
#./sbin/mr-jobhistory-daemon.sh start historyserver #查看历史任务

11)启动成功后可以在http://localhost:8088/cluster访问集群资源管理器。

3,安装MySQL

3.1 查看是否本机上安装了MySQL或MariaDB

判断是否安装了MariaDB

代码语言:javascript

复制

#sudo dpkg -l | grep maria

判断是否安装了mysql

代码语言:javascript

复制

#sudo dpkg -l | grep mysql

3.2 卸载MySQL或MariaDB

如果以前安装了MySQL或MariaDB,我们这里建议卸载

卸载以前安装MySQL:

代码语言:javascript

复制

#sudo apt autoremove mysql-*

卸载以前安装MariaDB:

代码语言:javascript

复制

#sudo apt autoremove mariadb-*

3.3安装MariaDB

代码语言:javascript

复制

#sudo apt update
#sudo apt install mariadb-server

3.4检查MariaDB服务状态

代码语言:javascript

复制

#sudo systemctl status mariadb

3.5基本的配置

代码语言:javascript

复制

#sudo mysql_secure_installation

代码语言:javascript

复制

1)Enter current password for root (enter for none):
(预设的MariaDB没有密码,直接Enter即可)
2)Switch to unix_socket authentication [Y/n] n
(是否切换unix_socket安全认证,这里输入的n,即不切换)
3)Change the root password? [Y/n] y
(是否修改root账户的密码,输入的y,即会修改root密码
注意:
- root密码最好是复杂密码,否则可能会每次连接MariaDB时需要加sudo
- 在设置密码时,输入密码时是不会跳光标的
- 本文将密码设置成12345)
4)Remove anonymous users? [Y/n] y
(是否删除匿名用户,这里输入的是y,即删除匿名用户
默认情况下,MariaDB安装有匿名用户,允许任何人登录MariaDB而无需为其创建帐户,在生产环境中一定要删除)
5)Disallow root login remotely? [Y/n] y    
(是否允许远程登录root账户,否则只能在localhost上登录root账户,这里输入的y,即不允许远程登录root账户)
6)Remove test database and access to it? [Y/n] y
(是否删除test数据库,这里输入的y,即删除test数据库
默认情况下,MariaDB有一个test数据库,允许任何用户获取)
7)Reload privilege tables now? [Y/n] y
(是否重新加载权限表,这里输入的y,即立即重新加载)

4,安装Hive

4.1下载Hive安装包

apache-hive-2.3.9-bin.tar.gz

4.2安装hive

代码语言:javascript

复制

#tar -xzf apache-hive-2.3.9-bin.tar.gz -C /usr/local/
#cd /usr/local/
#mv apache-hive-2.3.9 hive
#gedit ~/.bashrc

代码语言:javascript

复制

export HIVE_HOME=/usr/local/hive
export PATH=$HIVE_HOME/bin:$PATH

代码语言:javascript

复制

#source ~/.bashrc

4.3上传MySQL驱动

下载mysql-connector-java-5.1.49.tar.gz

代码语言:javascript

复制

#tar -xvf mysql-connector-java-5.1.49.tar.gz
#cp mysql-connector-java-5.1.49/mysql-connector-java-5.1.49.jar /usr/local/hive/lib

4.4修改配置文件 hive-site.xml

记住:单机版本仅包括下面的内容,多余的请删除,我在这里在了老跟投。

代码语言:javascript

复制

#gedit conf/hive-site.xml

代码语言:javascript

复制

<?xml version="1.0"
encoding="UTF-8" standalone="no"?>
<?xml-stylesheet
type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- MySQL数据库地址 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<!-- MySQL数据库驱动 -->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- MySQL数据库账号 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<!-- MySQL数据库密码 -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive_pwd</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
</property>
</configuration>

4.5元数据初始化

1)数据库对账号授权

代码语言:javascript

复制

#mysql -uroot -p123456
mysql>grant all privileges on hive.* to 'hive'@'%' identified by 'hive_pwd';

2)初始化元数据

代码语言:javascript

复制

#schematool -dbType mysql -initSchema

3) 运行hive

代码语言:javascript

复制

# hive
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/hive/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-reload4j-1.7.36.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Logging initialized using configuration in jar:file:/usr/local/hive/lib/hive-common-2.3.9.jar!/hive-log4j2.properties Async: true
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
hive>
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
SQL 存储 弹性计算
Mac安装单机版hive
基本学习使用hive可以,但有条件,还是建议买个ecs,在linux环境中学习
467 0
|
7月前
|
SQL 数据采集 数据挖掘
大数据行业应用之Hive数据分析航班线路相关的各项指标
大数据行业应用之Hive数据分析航班线路相关的各项指标
198 1
|
SQL Java 大数据
Hive实战(03)-深入了解Hive JDBC:在大数据世界中实现数据交互
Hive实战(03)-深入了解Hive JDBC:在大数据世界中实现数据交互
617 1
|
SQL 分布式计算 大数据
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 入门
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 入门
159 0
|
7月前
|
SQL 存储 大数据
【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)
【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)
263 0
|
SQL 存储 大数据
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 语法与概念
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 语法与概念
147 0
|
7月前
|
SQL 分布式计算 数据库
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
278 0
|
7月前
|
SQL 存储 分布式计算
【大数据技术Hadoop+Spark】Hive数据仓库架构、优缺点、数据模型介绍(图文解释 超详细)
【大数据技术Hadoop+Spark】Hive数据仓库架构、优缺点、数据模型介绍(图文解释 超详细)
1113 0
|
2月前
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
47 0
|
5月前
|
SQL 分布式计算 大数据
大数据处理平台Hive详解
【7月更文挑战第15天】Hive作为基于Hadoop的数据仓库工具,在大数据处理和分析领域发挥着重要作用。通过提供类SQL的查询语言,Hive降低了数据处理的门槛,使得具有SQL背景的开发者可以轻松地处理大规模数据。然而,Hive也存在查询延迟高、表达能力有限等缺点,需要在实际应用中根据具体场景和需求进行选择和优化。