hadoop 相关环境搭建

news2024/12/23 17:44:13

21.Windows下安装Hadoop; Hive MySQL版_hadoop hive windows安装_学无止境的大象的博客-CSDN博客

 

https://www.cnblogs.com/liugp/p/16244600.html
备注。因为beeline一直报错,最有一怒之下把hive的lib下所有jar都拷贝到hadoop的share\hadoop\common\lib

各软件的相关命令最好到各自安装目录或者bin目录下执行,防止初始化目录的时候位置不对

一、Windows10 hadoop

百度安全验证

环境:jdk8 、win10 、hadoop-3.3.4

1、下载解压

jdk8的安装这里不说了。

网站上下载hadoop并解压

我是在官网下的:https://hadoop.apache.org/release/3.3.4.html

Index of /apache/hadoop/common

2、修改配置文件

1、打开D:\hadoop-2.8.5\etc\hadoop\core-site.xml将以下部分复制到configuration中:

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

2、打开D:\hadoop-2.8.5\etc\hadoop\mapred-site.xml将以下部分复制到configuration中:

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

3、打开D:\hadoop-2.8.5\etc\hadoop\yarn-site.xml将以下部分复制到configuration中:

<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.hahoop.mapred.ShuffleHandler</value>
        </property> 
</configuration>

4、打开D:\hadoop-2.8.5\etc\hadoop\hdfs-site.xml 将以下部分复制到configuration中:

这里的 value 文件路径建议规划好,用以下配置会在安装的盘符根目录建立想目录。我本地如下:

我的hadoop安装路径:D:\hadoop-3.3.4

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

3、异常处理

实际上异常应该在执行相关命令后出现,这里就先列出来

1、JAVA_HOME配置问题

Error: JAVA_HOME is incorrectly set.

JAVA_HOME路径不对或者含有空格、空格的处理方式:

修改D:\hadoop-3.3.4\etc\hadoop\hadoop-env.cmd 如下:

set JAVA_HOME=C:\PROGRA~1\Java\jdk1.8.0_172

2、缺少 winutils.exe 和 hadoop.dll文件

java.lang.RuntimeException: java.io.FileNotFoundException: Could not locate Hadoop executable: D:\hadoop-3.3.4\bin\winutils.exe -see https://wiki.apache.org/hadoop/WindowsProblems

理论上 winutils和hadoop版本要一致,这里winutils只能下到3.2的版本

解决:https://gitee.com/shockingblue/winutils 3.2 中的hadoop.dll 和 winutils.exe copy到 HADOOP_HOME\bin

4、启动命令

格式化HDFS

D:\hadoop-3.3.4\bin>hadoop namenode -format

开启四个进程

D:\hadoop-3.3.4\sbin>start-all.cmd

在浏览器中输入:http://localhost:8088/cluster 可以看到YARN界面

访问hadoop文件管理页面 http://localhost:9870/dfshealth.html#tab-overview

5、常用命令

先在Hadoop上创建HDFS目录'可以自己定义'例如

命令如下(记得先启动Hadoop):
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

hdfs dfs -chmod -R 777 /

1、上传

hdfs dfs -put E:\1.txt /user/hive/warehouse/1.txt

hdfs dfs -cat /user/hive/warehouse/1.txt

本地先新增一个文件内容为 “select 1 from” 之前有测试中文乱码,仅仅为了测试命令改为英文

二、安装Hive MySQL版本

1、下载解压

Index of /dist/hive

MySQL :: Begin Your Download

我用的是最新的hive-3.1.3 下载bin不是src

在windows 环境少 Hive的执行文件、运行程序

用apache-hive-1.0.0-src\bin (下载src不是bin) 替换安装的bin

安装配置参考:

【傻瓜式教程】Windows下安装Hive MySQL版【附安装Hadoop教程】全网最详细的图文教程_windows安装hive_报告,今天也有好好学习的博客-CSDN博客

Hive Window安装 (Hadoop)_51CTO博客_安装hadoop

1、环境变量配置

变量名:HIVE_HOME
变量值:E:\apache-hive-2.1.1-bin

Path 新增 变量值: %HIVE_HOME%\bin

2、在Hadoop上创建HDFS目录

命令如下(记得先启动Hadoop):
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

3、创建my_hive目录

创建以下几个空目录:

E:\apache-hive-2.1.1-bin\my_hive

E:\apache-hive-2.1.1-bin\my_hive\operation_logs_dir

E:\apache-hive-2.1.1-bin\my_hive\querylog_dir

E:\apache-hive-2.1.1-bin\my_hive\resources_dir

E:\apache-hive-2.1.1-bin\my_hive\scratch_dir

4、mysql上创建hive库

create database if not exists hive default character set latin1;

或者用Navicat工具也行

2、修改配置

如图,找到E:\apache-hive-2.1.1-bin\conf目录下的4个文件

按照如下方式进行重命名更改:

hive-default.xml.template -> hive-site.xml
hive-env.sh.template -> hive-env.sh
hive-exec-log4j2.properties.template -> hive-exec-log4j2.properties
hive-log4j2.properties.template -> hive-log4j2.properties

1、修改 hive-env.sh

HADOOP_HOME 网上有两种 带export和不带

这里都写上吧,后面有去掉第一个了

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

2、修改hive-site.xml

<!-- 指定的位置在hdfs上的目录-->
  <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
    <description>location of default database for the warehouse</description>
  </property>

<!-- 指定的位置在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>

<!-- 本地scratch_dir目录 -->
  <property>
    <name>hive.exec.local.scratchdir</name>
    <value>D:/temp/hadoop/apache-hive-2.1.1-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:/temp/hadoop/apache-hive-2.1.1-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_dir目录 -->
<property>
    <name>hive.querylog.location</name>
    <value>D:/temp/hadoop/apache-hive-2.1.1-bin/my_hive/querylog_dir</value>
    <description>Location of Hive run time structured log file</description>
  </property>

<!-- 本地operation_logs_dir目录 -->
  <property>
    <name>hive.server2.logging.operation.log.location</name>
    <value>D:/temp/hadoop/apache-hive-2.1.1-bin/my_hive/operation_logs_dir</value>
    <description>Top level directory where operation logs are stored if logging functionality is enabled</description>
  </property>

<!-- 数据库URL -->
  <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.
      To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
      For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
    </description>
  </property>

<!-- 数据库Driver -->
 <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>root</value>
    <description>Username to use against metastore database</description>
  </property>

<!-- Password数据库密码 -->
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>root</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>

3、异常处理

1、hive-site.xml文件有特殊字符

hive --service metastore 命令遇到一个错误网上没有 提示是hive-site.xml文件有特殊字符,大概是3千多行

在一个描述类description标签, 直接上了

2、hive --service metastore提示数据库类的异常

猜想是网上说的初始化mysql库表导致,最终手动执行以下文件(copy sql到navicat执行, 用整个文件也异常。。。)

D:\apache-hive-3.1.3-bin\scripts\metastore\upgrade\mysql\hive-schema-3.1.0.mysql.sql

3、hive --service metastore 报一个hadoop_home路径异常

这个应该是安装hadoop配置环境变量的时候HADOOP_HOME的时候多加了\bin --个人原因

4、启动命令 以管理员身份

1、先启动hadoop

切换到E:\Hadoop\hadoop-2.7.7\sbin命令下,输入命令start-dfs.cmd

2、启动Hive metastore服务

以管理员身份打开CMD,输入命令hive --service metastore

补充:只有第一次打开需要输入hive --service metastore。

这里经历了很多异常,最终还是手动执行脚本的

D:\apache-hive-3.1.3-bin\scripts\metastore\upgrade\mysql\hive-schema-3.1.0.mysql.sql

3、启动Hive

打开CMD,输入命令hive.cmd 或者 hive

4、验证

个时候就可以输入HQL语句啦。

我们输入一个

create table stu(id int, name string);

然后再浏览器地址栏输入:

http://localhost:9870/explorer.html#/user/hive/warehouse

5、配置beeline

1、添加beeline配置

【温馨提示】hive命令会慢慢不再使用了,以后就用beeline,如果对hive不了解的,可以看我之前的文章:大数据Hadoop之——数据仓库Hive

在Hive服务安装目录的%HIVE_HOME%\conf\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>

在Hadoop服务安装目录的%HADOOP_HOME%\etc\hadoop\core-site.xml配置文件中添加以下配置:

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

【注意】hadoop.proxyuser.29209.hosts和hadoop.proxyuser.29209.hosts,其中29209是连接beeline的用户,将29209替换成自己的用户名即可,其实这里的用户就是我本机的用户,也是上面创建文件夹的用户,这个用户是什么不重要,它就是个超级代理。我的是Administrator

2、启动hiveserver2

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

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

【问题】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

HiveServer2 web:http://localhost:10002/

3、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下

因为发生了很多NoClassDefFoundError 所以我是把Hive的所有jar都复制过去了


【问题二】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 29209 # 下面这句跟上面等价,都可以登录 $ %HIVE_HOME%\bin\beeline.cmd -u jdbc:hive2://localhost:10001 -n 29209

【问题三】Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hive/service/cli/HiveSQLException。
【解决】把Hive安装目录下,将hive-service-3.1.2.jar复制到Hadoop安装目录的\share\hadoop\common\lib下。

再重启登录

$ hive --service metastore $ hive --service hiveserver2 $ %HIVE_HOME%\bin\beeline.cmd -u jdbc:hive2://localhost:10001 -n 29209

正常登录,一切OK,更多关于大数据的知识,请耐心等待~

本地:beeline -u jdbc:hive2://localhost:10001

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/653025.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023 年 5 大机器人趋势

原创 | 文 BFT机器人 国际机器人联合会报告 法兰克福&#xff0c;2023 年 2 月 16 日——全球操作机器人的存量创下约 350 万台的新纪录——安装价值估计达到 157 亿美元。国际机器人联合会分析了 2023 年影响机器人技术和自动化的 5 大趋势。 2023 年 5 大机器人趋势 © 国…

2000-2021年全国1km分辨率的逐日PM10栅格数据

空气质量数据是在我们日常研究中经常使用的数据&#xff01;之前我们分享了来自于Zendo平台的1km分辨率的PM2.5栅格数据&#xff08;可查看之前的文章获悉详情&#xff09;&#xff1a; 2000-2021年全国1km分辨率的逐日PM2.5栅格数据 2000-2021年全国1km分辨率的逐月PM2.5栅格…

双功能螯合剂Me-Tetrazine PEG7 NOTA,应用于生物和材料科学的研究中

文章关键词&#xff1a;双功能螯合剂&#xff0c;大环化合物 MeTz-PEG7-NOTA&#xff0c;NOTA PEG7 Me-Tetrazine&#xff0c;甲基四嗪-PEG7-NOTA &#xff08;文章编辑来源于&#xff1a;西安凯新生物科技有限公司小编WMJ&#xff09;​ 一、Product structure&#xff1a;…

组合逻辑毛刺消除

目录 组合逻辑毛刺消除 1、简介 2、实验任务 3、程序设计 1、组合逻辑输出加寄存器 2、信号同步法 &#xff08;1&#xff09;信号延时同步法 &#xff08;2&#xff09;状态机控制 3、格雷码计数器 4、仿真验证 组合逻辑毛刺消除 信号在 IC/FPGA 器件中通过逻辑单元…

管理类联考——英语——翻译篇——新题型——经典方法论

第一节 英语(一)翻译 根据考试大纲&#xff0c;考研英语(一R翻译部分主要考查考生准确理解概念或结构较复杂的英语文字材料的能力。具体考查方式是要求考生阅读一篇约400词的文章&#xff0c;并将其中5个画线部分(约150词)译成汉语,要求译文准确、完整、通顺。 可以看出&#…

js数组高阶函数——filter()方法

js数组高阶函数——filter方法 filter&#xff08;&#xff09;方法⭐⭐⭐例1⭐⭐⭐例2⭐⭐⭐例3⭐⭐⭐例4⭐⭐⭐例5 filter&#xff08;&#xff09;方法 ⭐一般来说&#xff0c;filter() 方法用于过滤数组中的元素&#xff0c;并返回一个新数组。 语法&#xff1a; array.f…

Python多线程编程详解

概要 进程&#xff08;process&#xff09;指的是正在运行的程序的实例&#xff0c;当我们执行某个程序时&#xff0c;进程就被操作系统创建了。而线程&#xff08;thread&#xff09;则包含于进程之中&#xff0c;是操作系统能够进行运算调度的最小单元&#xff0c;多个线程可…

【AntDB数据库】AntDB数据库告警管理

告警历史 功能概述 数据库系统的主机、单节点集群的被监测指标达到告警阀值时&#xff0c;AMOPS就会产生告警并展示在告警分类页面上。 告警分类页面提供告警搜索查看功能&#xff0c;用户可以指定监控项、集群、事件级别、时间范围和告警对象对告警进行搜索。 查询的告警数…

Android12之执行adb disable-verity后android无法启动(一百五十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

AotucCrawler 快速爬取图片

AotucCrawler 快速爬取图片 今天介绍一款自动化爬取图片项目。 GitHub: GitHub - YoongiKim/AutoCrawler: Google, Naver multiprocess image web crawler (Selenium) Google, Naver multiprocess image web crawler (Selenium) 关键字 爬虫网站&#xff1a;Google、Naver &…

【深度学习】2-3 神经网络-输出层设计

前馈神经网络(Feedforward Neural Network)&#xff0c;之前介绍的单层感知机、多层感知机等都属于前馈神经网络&#xff0c;它之所以称为前馈(Feedforward)&#xff0c;或许与其信息往前流有关&#xff1a;数据从输入开始&#xff0c;流过中间计算过程&#xff0c;最后达到输出…

springboot-内置Tomcat

一、springboot的特性之一 基于springboot的特性 自动装配Configuretion 注解 二、springboot内置Tomcat步骤 直接看SpringApplication方法的代码块 总纲&#xff1a; 1、在SpringApplication.run 初始化了一个上下文ConfigurableApplicationContext configurableApplica…

服务负载均衡Ribbon

服务负载均衡Ribbon Ribbon 介绍Ribbon 案例Ribbon 负载均衡策略Ribbon 负载均衡算法设置自定义负载均衡算法 Ribbon 介绍 Ribbon 是一个的客服端负载均衡工具&#xff0c;它是基于 Netflix Ribbon 实现的。它不像 Spring Cloud 服务注册中心、配置中心、API 网关那样独立部署…

使用Postman创建Mock Server

这篇文章将教会大家如何利用 Postman&#xff0c;通过 Mock 的方式测试我们的 API。 什么是 Mock Mock 是一项特殊的测试技巧&#xff0c;可以在没有依赖项的情况下进行单元测试。通常情况下&#xff0c;Mock 与其他方法的主要区别就是&#xff0c;用于取代代码依赖项的模拟对…

论文笔记 | 谷歌 Soft Prompt Learning ,Prefix-Tuning的 -> soft promt -> p tuning v2

论文笔记 | 谷歌 Soft Prompt Learning ptuning -> Prefix-Tuning -> soft promt -> p tuning v2 "The Power of Scale for Parameter-Efficient Prompt Tuning" EMNLP 2021 Google Brain 人能理解的不一定是模型需要的&#xff0c;所以不如让模型自己训…

多线程之线程安全

写在前面 本文一起看下线程安全相关内容。 1&#xff1a;重要的概念 1.1&#xff1a;竞态条件 多个线程竞争同一资源&#xff0c;如果是对多个线程访问资源的顺序敏感&#xff08;即导致非预期结果&#xff09;&#xff0c;则该资源就是竞态条件。 1.2&#xff1a;临界区 …

亚毫秒GC暂停到底有多香?JDK17+ZGC初体验|得物技术

1 前言 垃圾回收器的暂停问题一直是Java工程师关注的重点&#xff0c;特别是对实时响应要求较高的服务来说&#xff0c;CMS和G1等主流垃圾回收器的数十毫秒乃至上百毫秒的暂停时间相当致命。此外&#xff0c;调优门槛也相对较高&#xff0c;需要对垃圾回收器的内部机制有一定的…

Nodejs六、数据库操作

零、文章目录 Nodejs六、数据库操作 1、MYSQL数据库 MYSQL相关知识请参考MYSQL基础 2、在项目中操作 MySQL &#xff08;1&#xff09;操作数据库的步骤 安装操作 MySQL 数据库的第三方模块&#xff08;mysql&#xff09;通过 mysql 模块连接到 MySQL 数据库通过 mysql 模…

chatgpt赋能python:Python编写网站的SEO指南

Python 编写网站的 SEO 指南 Python 是一个高可扩展性和灵活性的编程语言&#xff0c;在创建面向 Web 的应用程序和网站时非常强大。但是&#xff0c;即使你创建了一个出色的网站&#xff0c;也需要将它放在正确的地方以便被人们发现。 搜索引擎优化&#xff08;SEO&#xff0…

【深度学习】2-2 神经网络 - 前向传播实现3层神经网络

神经网络分层 神经网络的一个重要性质是它可以自动地从数据中学习到合适的权重参数。 用图来表示神经网络的话&#xff0c;把最左边的一列称为输入层&#xff0c;最右边的一列称为输出层&#xff0c;中间的一列称为中间层。中间层有时也叫隐藏层&#xff08;或隐含层&#xf…