0
点赞
收藏
分享

微信扫一扫

部署hadoop+hive环境详解(window10环境)

kiliwalk 2022-02-13 阅读 83

文章目录

一、安装JDK8

1)JDK下载地址

http://www.oracle.com/technetwork/java/javase/downloads/index.html
在这里插入图片描述
按正常下载是需要先登录的,这里提供一个不用登录下载的方法
在这里插入图片描述

其实只要后半部分,再把标红的otn换成otn-pub就可以直接下载了

下载完后就是傻瓜式安装了

2)设置环境变量

在这里插入图片描述

3)验证

$ java -version

在这里插入图片描述

二、Hadoop安装(window10环境)

1)下载Hadoop3.1.3

官网下载:https://hadoop.apache.org/release/3.1.3.html
下载各种版本地址入口:https://hadoop.apache.org/release.html
在这里插入图片描述

2)Hadoop配置环境变量

  • HADOOP_HOME
    在这里插入图片描述
    在这里插入图片描述

验证

$ hadoop --version

在这里插入图片描述

3)在hadoop解压目录下创建相关目录

  • 创建datatmp目录
    在这里插入图片描述
  • 然后在data文件夹下面再创建namenodedatanode目录
    在这里插入图片描述

4)修改Hadoop配置文件

配置文件目录:$HADOOP_HOME\etc\hadoop

1、core-site.xml文件:添加以下代码

<configuration>
	<property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>  
</configuration>

2、hdfs-site.xml文件:添加以下代码,路径改成自己的安装路径

<configuration>
	<property>
		<name>dfs.replication</name>
		<value>1</value>
	</property>
	<property>
		<name>dfs.namenode.name.dir</name>    
		<value>/D:/software/window-hadoop-hive/hadoop/hadoop-3.1.3/data/namenode</value>    
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>    
		<value>/D:/software/window-hadoop-hive/hadoop/hadoop-3.1.3/data/datanode</value>  
	</property>
</configuration>

3、mapred-site.xml文件:添加以下代码

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

4、yarn-site.xml文件:添加以下代码

<configuration>

<!-- Site specific YARN configuration properties -->

	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
	<property>
		<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
		<value>org.apache.hadoop.mapred.ShuffleHandler</value>
	</property>
	<property>
		<name>yarn.nodemanager.resource.memory-mb</name>
		<value>1024</value>
	</property>
	<property>
		<name>yarn.nodemanager.resource.cpu-vcores</name>
		<value>1</value>
	</property>

</configuration>

5)格式化节点

$ hdfs namenode -format

6)替换文件

1、替换bin目录下文件(winutils)

下载:apache-hadoop-3.1.0-winutils
也可以去GitHub上下载其它对应版本
在这里插入图片描述
在这里插入图片描述
当然如果自己有时间也有兴趣的话,可以自己去编译

2、按照路径找到图中该文件

在这里插入图片描述
把它复制到上一级目录,即
在这里插入图片描述

7)运行

在这里插入图片描述
出现下面四个窗口就是 成功了,注意每个窗口标题的后面的名称,比如yarn nodemanager,如果没有出现则是失败

在这里插入图片描述

8)验证

hdfs web 地址:http://localhost:9870/
在这里插入图片描述
yarn web 地址:http://localhost:8088/
在这里插入图片描述
到此为止window版本的hadoop就安装成功了

三、Hive安装(window10环境)

1)下载Hive

各版本下载地址:http://archive.apache.org/dist/hive

这选择最新版本
在这里插入图片描述
hive 3.1.2版本下载地址:http://archive.apache.org/dist/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz

2)Hive配置环境变量

在这里插入图片描述

3)新建本地目录(后面配置文件会用到)

在这里插入图片描述

4)在hadoop上创建hdfs目录(后面配置文件会用到)

$ hadoop fs  -mkdir       /tmp
$ hadoop fs  -mkdir       /user/
$ hadoop fs  -mkdir       /user/hive/
$ hadoop fs  -mkdir       /user/hive/warehouse 
$ hadoop fs  -chmod g+w   /tmp
$ hadoop fs  -chmod g+w   /user/hive/warehouse

在这里插入图片描述
在这里插入图片描述

5)安装mysql8.x

1、下载mysql

官网下载:https://dev.mysql.com/downloads/mysql/
在这里插入图片描述
在这里插入图片描述

2、配置mysql环境变量

在这里插入图片描述

3、初始化mysql

在这里插入图片描述
在这里插入图片描述

# 切换到mysql bin目录下执行
# cd D:\software\window-hadoop-hive\mysql\mysql-8.0.28-winx64\bin
# d:
$ mysqld --initialize --console

在这里插入图片描述

4、安装mysql服务

$ mysqld --install mysql

在这里插入图片描述

6、通过命令启动服务

$ net start mysql

在这里插入图片描述

7、通过mysql客户端登录验证并修改root密码

$ mysql -uroot -p
#输入上面初始化的密码

8、重置mysql root密码(命令行都要以管理员运行 )

  1. 停止mysql服务
$ net stop mysql
  1. 启动MySQL服务的时候跳过权限表认证
$ mysqld --console --skip-grant-tables --shared-memory
  1. 在新开的命令行中执行mysql
$ mysql
  1. 将root用户的密码清空
$ update user set authentication_string = ''  where user='root' ;    
  1. quit 退出,然后在之前的命令行将我们开启的mysql服务停止掉(Ctrl+C或者关闭命令行),然后执行net start mysql 重新启动mysql服务
$ net  start mysql
  1. 在我们之后开启的命令行中输入mysql -uroot -p 然后按enter键,输入密码继续按enter键(这里密码已经被清空)
$ mysql -uroot -p
  1. 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;

在这里插入图片描述
【问题】如果mysql工具出现错误:

【原因】

【解决】

# 管理员权限运行命令
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

FLUSH PRIVILEGES;
  1. 退出后,使用新密码登录
$ mysql -uroot -p

在这里插入图片描述

6)修改Hive 配置文件

配置文件目录D:\software\window-hadoop-hive\hive\apache-hive-3.1.2-bin\conf有4个默认的配置文件模板拷贝成新的文件名

1、hive-site.xml 文件:配置文件内容如下

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
--><configuration>

<!--hive的临时数据目录,指定的位置在hdfs上的目录-->
	<property>
		<name>hive.metastore.warehouse.dir</name>
		<value>/user/hive/warehouse</value>
		<description>location of default database for the warehouse</description>
	</property>
 
<!--hive的临时数据目录,指定的位置在hdfs上的目录-->
	<property>
		<name>hive.exec.scratchdir</name>
		<value>/tmp/hive</value>
		<description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/&lt;username&gt; is created, with ${hive.scratch.dir.permission}.</description>
	</property>
 
<!-- scratchdir 本地目录 -->
	<property>
		<name>hive.exec.local.scratchdir</name>
		<value>D:/software/window-hadoop-hive/hive/apache-hive-3.1.2-bin/my_hive/scratch_dir</value>
		<description>Local scratch space for Hive jobs</description>
	</property>
 
<!-- resources_dir 本地目录 -->
	<property>
		<name>hive.downloaded.resources.dir</name>
		<value>D:/software/window-hadoop-hive/hive/apache-hive-3.1.2-bin/my_hive/resources_dir/${hive.session.id}_resources</value>
		<description>Temporary local directory for added resources in the remote file system.</description>
	</property>
 
<!-- querylog 本地目录 -->
	<property>
		<name>hive.querylog.location</name>
		<value>D:/software/window-hadoop-hive/hive/apache-hive-3.1.2-bin/my_hive/querylog_dir</value>
		<description>Location of Hive run time structured log file</description>
	</property>
 
<!-- operation_logs 本地目录 -->
	<property>
		<name>hive.server2.logging.operation.log.location</name>
		<value>D:/software/window-hadoop-hive/hive/apache-hive-3.1.2-bin/my_hive/operation_logs_dir</value>
		<description>Top level directory where operation logs are stored if logging functionality is enabled</description>
	</property>
 
<!-- 数据库连接地址配置 -->
	<property>
		<name>javax.jdo.option.ConnectionURL</name>
		<value>jdbc:mysql://localhost:3306/hive?serverTimezone=UTC&amp;useSSL=false&amp;allowPublicKeyRetrieval=true</value>
		<description>
		JDBC connect string for a JDBC metastore.
		</description>
	</property>
 
<!-- 数据库驱动配置 -->
	<property>
		<name>javax.jdo.option.ConnectionDriverName</name>
		<value>com.mysql.cj.jdbc.Driver</value>
		<description>Driver class name for a JDBC metastore</description>
	</property>
 
<!-- 数据库用户名 -->
	<property>
		<name>javax.jdo.option.ConnectionUserName</name>
		<value>root</value>
		<description>Username to use against metastore database</description>
	</property>
 
<!-- 数据库访问密码 -->
	<property>
		<name>javax.jdo.option.ConnectionPassword</name>
		<value>123456</value>
		<description>password to use against metastore database</description>
	</property>
 
<!-- 解决 Caused by: MetaException(message:Version information not found in metastore. ) -->
	<property>
		<name>hive.metastore.schema.verification</name>
		<value>false</value>
		<description>
		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.
		</description>
	</property>

<!-- 自动创建全部 -->
<!-- hive Required table missing : "DBS" in Catalog""Schema" 错误 -->
	<property>
		<name>datanucleus.schema.autoCreateAll</name>
		<value>true</value>
		<description>Auto creates necessary schema on a startup if one doesn't exist. Set this to false, after creating it once.To enable auto create also set hive.metastore.schema.verification=false. Auto creation is not recommended for production use cases, run schematool command instead.</description>
	</property>
</configuration>

2、hive-env.sh 文件:配置文件内容如下

# Set HADOOP_HOME to point to a specific hadoop install directory
export HADOOP_HOME=D:\software\window-hadoop-hive\hadoop\hadoop-3.1.3
 
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=D:\software\window-hadoop-hive\hive\apache-hive-3.1.2-bin\conf
 
# Folder containing extra libraries required for hive compilation/execution can be controlled by:
export HIVE_AUX_JARS_PATH=D:\software\window-hadoop-hive\hive\apache-hive-3.1.2-bin\lib

7)替换bin目录

下载:apache-hive-2.2.0-src.tar.gz

8)下载mysql-connector-java-*.jar

下载地址:https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.28/mysql-connector-java-8.0.28.jar
在这里插入图片描述

9)创建Hive 初始化依赖的数据库hive,注意编码格式:latin1

在这里插入图片描述

10)Hive 初始化数据

$ hive --service schematool -dbType mysql -initSchema

在这里插入图片描述
在这里插入图片描述

11)启动Hive 服务

1、首先启动Hadoop

2、再启动Hive 服务

$ hive --service metastore

在这里插入图片描述

3、验证

另起一个cmd窗口验证

$ hive
create databases test;
show databases;

12)配置beeline

1、添加beeline配置

在hive服务的安装节点的hive-site.xml配置文件中添加以下配置:

<!-- host -->
<property>
	<name>hive.server2.thrift.bind.host</name>
	<value>localhost</value>
	<description>Bind host on which to run the HiveServer2 Thrift service.</description>
</property>

<!-- hs2端口 默认是10000,为了区别,我这里不使用默认端口-->
<property>
	<name>hive.server2.thrift.port</name>
	<value>10001</value>
</property>

<property>
	<name>hadoop.proxyuser.root.hosts</name>
	<value>*</value>
</property>
<property>
	<name>hadoop.proxyuser.root.groups</name>
	<value>*</value>
</property>

2、启动hiveserver2

启动hiveserver2 之前必须重启hive服务

$ hive --service metastore
$ hive --service hiveserver2  start

【问题】java.lang.NoClassDefFoundError: org/apache/tez/dag/api/SessionNotRunning
【解决】在hive 配置文件hive-site.xml添加如下配置:

<property>
	<name>hive.server2.active.passive.ha.enable</name>
	<value>true</value>
	<description>Whether HiveServer2 Active/Passive High Availability be enabled when Hive Interactive sessions are enabled.This will also require hive.server2.support.dynamic.service.discovery to be enabled.</description>
</property>

重启hiveserver2

$ hive --service metastore
$ hive --service hiveserver2  start

在这里插入图片描述
HiveServer2 web:http://localhost:10002/
在这里插入图片描述

2、beeline客户端登录

$ beeline

【问题一】Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hive/jdbc/JdbcUriParseException
【解决】Hadoop缺少hive-jdbc-***.jar,将Hive安装目录下的lib文件夹中的hive-jdbc-3.1.2.jar包复制到Hadoop安装目录下的\share\hadoop\common\lib中
在这里插入图片描述
【问题二】Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hive/conf/HiveConf
【解决】Hive安装目录下,将hive-common-3.1.2.jar复制到Hadoop安装目录下的\share\hadoop\common\lib中
在这里插入图片描述

$ beeline
!connect jdbc:hive2://localhost:10001
$ %HIVE_HOME%\bin\beeline.cmd -u jdbc:hive2://localhost:10001

在这里插入图片描述
beeline上面还有点问题,有时间再解决~

举报

相关推荐

0 条评论