大数据环境搭建(一)-Hive

1 hive介绍

由Facebook开源的,用于解决海量结构化日志的数据统计的项目

本质上是将HQL转化为MapReduce、Tez、Spark等程序

Hive表的数据是HDFS上的目录和文件

Hive元数据 metastore,包含Hive表的数据库、表名、列、分区、表类型、表所在目录等。

根据Hive部署模式(嵌入、本地、远程)的不同,元数据存储的位置也不同,一般是远程方式多用户访问,元数据存储MySQL中。

用户通过客户端(CLI、JDBC/ODBC) 向Hive提交SQL语句执行任务,大致会做如下操作:

  • 提交SQL给Driver
  • 将SQL转换为抽象语法树(AST),使用Hive的元数据进行校验
  • 将抽象语法树转换为逻辑计划
  • 将逻辑计划转换为物理计划
  • 执行物理计划,返回结果给客户端

2 CentOS安装MySQL 存储Hive元数据

MySQL部署在bd-centos01节点

添加mysql的yum源

下载mysql源安装包,MySQL官网的YUM源地址(http://dev.mysql.com/downloads/repo/yum/ )

# wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

安装mysql源

# yum localinstall mysql57-community-release-el7-8.noarch.rpm

检查mysql源是否安装成功

# yum repolist all | grep mysql
安装、启动mysql服务
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
# yum -y install mysql-community-server
# systemctl start mysqld
# systemctl enable mysqld
修改root本地登录密码

获取临时密码

$ grep 'temporary password' /var/log/mysqld.log
2019-06-17T08:07:04.775619Z 1 [Note] A temporary password is generated for root@localhost: 6?qrG;ClOP7A

登录

$ mysql -u root -p

修改密码

mysql> set password = password("密码");*5.5+版本要求密码:字母大小写、数字、特殊字符*mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)mysql> alter user 'root'@'localhost' identified by '密码';
Query OK, 0 rows affected (0.00 sec)
添加远程登录用户
mysql> grant all privileges on *.* to 'hadoop'@'%' identified by '密码' with grant option;
mysql> flush privileges;
mysql> quit;

3 hive环境搭建

先安装启动hadoop

参考 Hadoop环境安装

安装
$ tar -zxf  hive-3.1.3.tar.gz -C /opt/modules/
$ mv /opt/modules/apache-hive-3.1.3-bin/ /opt/modules/hive-3.1.3
配置
  • 配置hive-site.xml

    $ cd /opt/modules/hive-3.1.3/
    $ vi conf/hive-site.xml
    添加如下内容
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://bd-centos01:3306/metastore?createDatabaseIfNotExist=true&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8</value></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property><property><name>javax.jdo.option.ConnectionUserName</name><value>hadoop</value></property><property><name>javax.jdo.option.ConnectionPassword</name><value>mysql中添加的hadoop用户的密码</value></property><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value></property><property>    <name>hive.cli.print.header</name><value>true</value></property><property><name>hive.cli.print.current.db</name><value>true</value></property>
    </configuration>
    
  • 配置 hive-log4j.properties

    $ cp conf/hive-log4j2.properties.template conf/hive-log4j2.properties
    $ vi conf/hive-log4j2.propertie
    修改为
    property.hive.log.dir = /opt/modules/hive-3.1.3/${sys:user.name}
    
  • 配置hive-env.sh

    $ cp conf/hive-env.sh.template conf/hive-env.sh
    $ vi conf/hive-env.sh
    修改为
    HADOOP_HOME=/opt/modules/hadoop-3.3.4
    export HIVE_CONF_DIR=/opt/modules/hive-3.1.3/conf
    
  • 添加mysql驱动

    $ mv ~/software/mysql-connector-java-5.1.46.jar /opt/modules/hive-3.1.3/lib/
    
初始化metadata
$ bin/schematool -initSchema -dbType mysql -verbose
通过本地客户端访问
$ bin/hive
hive (default)>show databases;

4 开启hiveserver2服务

自己本地验证的集群可以配置

hiveserver2依赖Hadoop提供的 代理用户功能, 可以允许多个用户远程连接访问(beeline,jdbc等)

修改配置文件

  • 修改${HADOOP_HOME}/core-site.xml

    注意配置分发到所有节点

    <property><name>hadoop.proxyuser.hadoop.hosts</name><value>*</value>
    </property><property><name>hadoop.proxyuser.hadoop.groups</name><value>*</value>
    </property><property><name>hadoop.proxyuser.hadoop.users</name><value>*</value>
    </property>
    
  • 修改${HIVE_HOME}/hive-site.xml

    <property><name>hive.server2.thrift.bind.host</name><value>bd-centos01</value>
    </property><property><name>hive.server2.thrift.port</name><value>10000</value>
    </property>
    
  • 加载hadoop配置

    在${HADOOP_HOME}下执行
    $ bin/hdfs dfsadmin -refreshSuperUserGroupsConfiguration
    $ bin/yarn rmadmin -refreshSuperUserGroupsConfiguration
    
  • 启动hiveserver2服务

    $ bin/hive --service hiveserver2
    
  • 连接

    可通过jdbc、beeline等方式连接

    $ bin/beeline -u jdbc:hive2://bd-centos01:10000 -n hadoop
    

5 metastore服务

Hive的元数据服务为Hive CLI、Hiveserver2提供元数据访问。Hive的3种运行模式: 嵌入模式、本地模式元数据服务都嵌入Hive服务中,不需要额外启动,上面的配置,meatastore是本地模式。生产一般是远程模式,将metastore服务独立启动。根据hive.metastore.uris 参数值来判断,如果不为空则为远程模式,需要额外启动元数据服务。

自己本地验证的集群可以配置

下面是 metastore远程模式的配置

  • 修改配置${HIVE_HOME}/hive-site.xml

    <property><name>hive.metastore.uris</name><value>thrift://bd-centos01:9083</value>
    </property>
    
  • 启动metastore服务

    后续必须启动该服务,才能访问hive

    $ bin/hive --service metastore
    
  • beeline远程连接,输入密码

    $ beeline -u jdbc:hive2://bd-centos01:10000 -n hadoop -p
    

在这里插入图片描述

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

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

相关文章

深度学习如何入门

深度学习作为人工智能领域的一个热门分支&#xff0c;已经在图像识别、语音识别、自然语言处理等多个领域取得了令人瞩目的成果。对于想要入门深度学习的初学者来说&#xff0c;了解其基本概念、工具和步骤是非常重要的。本文将详细介绍如何入门深度学习。 一、深度学习基本概…

axios二次封装用法

axios二次封装 一、request.js import axios from axios import router from "/router";const request axios.create({baseURL: http://localhost:9090,timeout: 5000 })// request 拦截器 // 可以自请求发送前对请求做一些处理 // 比如统一加token&#xff0c;对…

学习数据结构的第一天

结构体 如何定义结构体 1、先定义结构体类型&#xff0c;再定义结构体类型变量 struct student/定义学生结构体类型/ { long number; char name[20]; char sex; int age; float score[3];/三科考试成绩/ }2、定义结构体类型同时定义结构体类型变量 struct student/定义学生结…

Spark部署模式

目录 部署模式概述 1. Local Mode 2. Standalone Mode 3. YARN Mode 4. Mesos Mode 5. Kubernetes Mode 部署模式选择 部署模式概述 Apache Spark支持多种部署模式&#xff0c;这些模式决定了如何在集群上启动和运行你的Spark应用程序。以下是Spark支持的主要部署模式&a…

什么是进销存?一文读懂进销存管理系统

阅读本文&#xff0c;你将了解&#xff1a;一、什么是进销存&#xff1b;二、什么是进销存管理系统&#xff1b;三、为什么有必要使用进销存管理系统&#xff1b;四、进销存管理系统的优势&#xff1b;五、好用的进销存管理系统。 这是我们公司搭建好的免费进销存系统模版&…

MyBatis | Insert null 错误,Column xxx cannot be null,即使数据库DDL里写了DEFAULT ‘‘

虽然DDL里写了fund_batch_no varchar(30) NOT NULL DEFAULT &#xff0c;但mybatis里是下面这么写的&#xff1a; <insert id"batchInsert"> insert into repay_detail_tab ( fund_batch_no) values <foreach collection"repayDetails" item&quo…

近屿智能引领行业前沿,精心打造AIGC大模型工程师和产品经理的进阶之路(附完整版学习路径图)

近屿智能&#xff0c;倾力打造了一套独特的AIGC大模型工程师和产品经理学习路径图。该路径图清晰地展示了从初学者到专家水平的技能进阶过程&#xff0c;为工程师和产品经理提供了明确的学习目标和成长路径。 这套学习路径图适用于不同背景和经验的学习者&#xff0c;无论您是初…

GPT在地学、GIS、气象、农业、生态、环境等领域中的高级应用

详情点击公众号&#xff1a;技术科研吧 链接&#xff1a;GPT在地学、GIS、气象、农业、生态、环境等领域中的高级应用 一开启大模型 1 开启大模型 1)大模型的发展历程与最新功能 2)大模型的强大功能与应用场景 3)国内外经典大模型&#xff08;ChatGPT、LLaMA、Gemini、DAL…

Python创建类的成员并访问

在Python中&#xff0c;类是面向对象编程的核心概念之一。通过类的定义&#xff0c;可以创建对象并定义对象的属性和方法。本文将介绍在Python中如何创建类的成员&#xff08;包括属性和方法&#xff09;&#xff0c;以及如何访问类的成员。 1. 创建类的属性 在Python…

【XR806开发板试用】TCP通信测试 Ping 命令测试

1.工程准备 由于要使用wifi功能&#xff0c;直接从wlan_demo复制一份出来&#xff0c;然后修改。 源文件只留下 main.c 就可以了。 BUILD.gn文件 import("//device/xradio/xr806/liteos_m/config.gni")static_library("app_mying") {configs []sources…

2024美赛C题完整解题教程及代码 网球运动的势头

2024 MCM Problem C: Momentum in Tennis &#xff08;网球运动的势头&#xff09; 注&#xff1a;在网球运动中&#xff0c;"势头"通常指的是比赛中因一系列事件&#xff08;如连续得分&#xff09;而形成的动力或趋势&#xff0c;这可能对比赛结果产生重要影响。球…

STL常用容器—list容器(链表)

STL常用容器—list容器&#xff08;链表&#xff09; 一、list容器基本概念二、list容器基本操作与常用方法1. list构造函数2. ☆list 插入和删除3. list 获取头尾数据4. list 大小操作5. list赋值和交换6. list 反转和排序 三、排序案例 参考博文1: &#xff1c;C&#xff1e;…

「连载」边缘计算(十四)02-02:边缘部分源码(源码分析篇)

&#xff08;接上篇&#xff09; CloudCore 本节将对CloudCore进行剖析&#xff0c;对CloudCore组件中功能模块共用的消息框架和各功能模块的具体功能进行深入剖析&#xff0c;具体包括CloudCore功能模块之间通信的消息框架、cloudhub剖析、edgecontroller剖析、devicecontro…

请解释Java中的线程池是什么,以及为什么要使用线程池?

在Java中&#xff0c;线程池是一种并发编程的机制&#xff0c;它维护了一个线程队列&#xff0c;用于重用已创建的线程&#xff0c;以便在处理任务时减少线程的创建和销毁开销。线程池提供了一种管理和控制线程执行的方式&#xff0c;可以有效地管理系统资源&#xff0c;提高程…

计算机视觉中的目标跟踪

从保护我们城市的监控系统到自动驾驶车辆在道路上行驶&#xff0c;目标跟踪已经成为计算机视觉中的一项基础技术。本文深入探讨了目标跟踪&#xff0c;探索了其基本原理、多样化的方法以及在现实世界中的应用。 什么是目标跟踪&#xff1f; 目标跟踪是深度学习在计算机视觉中广…

LLVM实战之C源码编译

目录 1. 详细步骤 2. 工作原理 本文将展示使用Clang&#xff08;C语言前端&#xff09;&#xff0c;把C语言源码转换成LLVM IR 。当然首先需要安装Clang并且把它添加到PATH环境中。 1. 详细步骤 &#xff08;1&#xff09;首先准备测试文件&#xff0c;在multiply.c文件编写…

JAVA Web 学习(四)RabbitMQ、Zookeeper

十、消息队列服务器——RabbitMQ RabbitMQ是使用Erlang语言开发的开源消息队列系统&#xff0c;基于AMQP协议来实现。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、 安全。AMQP协议更多用在企业系统内&#xff0c;对数据一致性、稳定性和可靠性要求…

ES6-let

一、基本语法 ES6 中的 let 关键字用于声明变量&#xff0c;并且具有块级作用域。 - 语法&#xff1a;let 标识符;let 标识符初始值; - 规则&#xff1a;1.不能重复声明let不允许在相同作用域内重复声明同一个变量2.不存在变量提升在同一作用域内&#xff0c;必须先声明才能试…

JS(react)图片压缩+图片上传

上传dome var fileNodeTakeStock: any createRef();<inputref{fileNodeTakeStock}onChange{showPictureTakeStock}style{{ display: "none" }}id"fileInpBtn"type"file"accept"image/*" //限制上传格式multiple{false}capture&qu…

线阵相机系列-- 1. 什么是线阵相机

线阵相机的概念 根据工业相机像素排列方式的不同&#xff0c;分为面阵相机和线阵相机。面阵相机的像素排列为一个完整的面&#xff0c;一次获取整幅二维图像&#xff0c;而线阵相机的像素以一条线排列&#xff0c;每次得到的图像呈现出一条线&#xff0c;通过设置扫描频率以及…