Hadoop、Hbase使用Snappy压缩

1. 前期准备

系统环境:centos7.9

配置信息:8C8G100G

hadoop和hbase为单节点部署模式

jdk版本jdk1.8.0_361

1.1. 修改系统时间

timedatectl set-timezone <TimeZone>

1.2. 修改主机名以及主机名和IP的映射

vim /etc/hosts

#将自己的主机名以及ip映射添加进去

1.3. 关闭防火墙

临时关闭防火墙

systemctl stop firewalld.service 

永久关闭

systemctl disable firewalld.service  

2. hadoop部署

2.1. 下载安装包

mkdir /u01

cd /u01

wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz

tar -zxvf hadoop-3.3.6.tar.gz

2.2. 修改配置文件

2.2.1. 修改core-site.xml

<configuration>

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://192.168.68.129:9000</value>

    </property>

    <!-- 指定 hadoop 数据的存储目录 -->

    <property>

        <name>hadoop.tmp.dir</name>

        <value>/u01/hadoop-3.3.6/tmp</value>

    </property>

    <property>

        <name>hadoop.proxyuser.root.hosts</name>

        <value>*</value>

    </property>

    <property>

        <name>hadoop.proxyuser.root.groups</name>

        <value>*</value>

    </property>

    <property>

        <name>io.compression.codecs</name>

        <value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.BZip2Codec,org.apache.hadoop.io.compress.SnappyCodec</value>

    </property>

    <property>

        <name>io.compression.codec.lzo.class</name>

        <value>org.apache.hadoop.io.compress.SnappyCodec</value>

    </property>

</configuration>

2.2.2. 修改hdfs-site.xml

<configuration>

    <property>

        <name>dfs.namenode.name.dir</name>

        <value>/u01/hadoop-3.3.6/hdfs/name</value>

        <final>true</final>

    </property>

    <property>

        <name>dfs.datanode.data.dir</name>

        <value>/u01/hadoop-3.3.6/hdfs/data</value>

        <final>true</final>

    </property>

    <property>

        <name>dfs.http.address</name>

        <value>192.168.68.129:50070</value>

    </property>

    <property>

        <name>dfs.permissions</name>

        <value>false</value>

    </property>

</configuration>

2.2.3. 修改yarn-site.xml

<configuration>

  <property>

    <name>yarn.nodemanager.aux-services</name>

    <value>mapreduce_shuffle</value>

  </property>

</configuration>

2.2.4. 修改hadoop-env.sh

export HDFS_NAMENODE_USER=hadoop
export HDFS_DATANODE_USER=hadoop
export HDFS_SECONDARYNAMENODE_USER=hadoop
export YARN_RESOURCEMANAGER_USER=hadoop
export YARN_NODEMANAGER_USER=hadoop
export HADOOP_MAPRED_HOME=/u01/hadoop-3.3.6

export HDFS_NAMENODE_USER=hadoop:
设置NameNode进程以hadoop用户身份运行。NameNode是HDFS中的主节点,负责管理文件系统的命名空间和客户端对文件的访问。

export HDFS_DATANODE_USER=hadoop:
设置DataNode进程以hadoop用户身份运行。DataNode是HDFS中的从节点,负责存储实际的数据块,并执行读写操作。

export HDFS_SECONDARYNAMENODE_USER=hadoop:
设置Secondary NameNode进程以hadoop用户身份运行。Secondary NameNode不是NameNode的备份,而是辅助NameNode进行检查点操作,帮助保持NameNode的运行状态。

export YARN_RESOURCEMANAGER_USER=hadoop:
设置ResourceManager进程以hadoop用户身份运行。ResourceManager是YARN的一部分,负责整个集群的资源管理和分配。

export YARN_NODEMANAGER_USER=hadoop:
设置NodeManager进程以hadoop用户身份运行。NodeManager是YARN的一部分,负责单个节点上的资源管理以及容器的生命周期管理。

export HADOOP_MAPRED_HOME=/u01/hadoop-3.3.6:
指定MapReduce框架的安装目录。这通常指向Hadoop发行版的根目录,在这个例子中是/u01/hadoop-3.3.6。
 

2.2.5. 修改mapred-site.xml

<configuration>

    <property>

        <name>mapreduce.framework.name</name>

        <value>yarn</value>

    </property>

    <property>

        <name>yarn.app.mapreduce.am.env</name>

        <value>HADOOP_MAPRED_HOME=/u01/hadoop-3.3.6</value>

    </property>

    <property>

        <name>mapreduce.map.env</name>

        <value>HADOOP_MAPRED_HOME=/u01/hadoop-3.3.6</value>

    </property>

    <property>

        <name>mapreduce.reduce.env</name>

        <value>HADOOP_MAPRED_HOME=/u01/hadoop-3.3.6</value>

    </property>

    <!-- 这个参数设为true启用压缩 -->

    <property>

        <name>mapreduce.output.fileoutputformat.compress</name>

        <value>true</value>

    </property>

    <property>

        <name>mapreduce.map.output.compress</name>

        <value>true</value>

    </property>

    <!-- 使用编解码器 -->

    <property>

        <name>mapreduce.output.fileoutputformat.compress.codec</name>

        <value>org.apache.hadoop.io.compress.SnappyCodec</value>

    </property>

</configuration>

2.2.6. 修改环境变量

vim /etc/profile

export HADOOP_HOME=/u01/hadoop-3.3.6

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

2.3. 启动hadoop服务

2.3.1. 格式化namenode

hdfs namenode -format

2.3.2. 启动服务

./sbin/start-all.sh

启动成功后,使用jps命令查看服务

显示有NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager这5个服务

则为启动成功

查看hdfs和yarn的web界面,端口分别是50070和8088

2.4. 验证snappy压缩

验证方法:运行Hadoop的hadoop-mapreduce-examples-3.3.6.jar测试包进行wordcount,查看生成的文件大小

创建一个文件,input,键入以下内容或其它内容,把这个文件上传到hdfs,当然也可以使用本地文件

jakchquihfquhdqwhcn9eiuhcf198fh8chquihfquhdqwhcwqhdb9uchquihfquhdqwhch91ugh2ufgb92ufb2ufsfcd

2.4.1. 未开启压缩

把mapred-site.xml和core-site.xml相关的snappy配置去掉,重启hadoop服务,执行以下命令行

./bin/hadoop jar /u01/hadoop-3.3.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /u01/input /u01/output-n

查看生成的文件大小,验证结果

2.4.2. 开启压缩

执行以下命令行

./bin/hadoop jar /u01/hadoop-3.3.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /u01/input /u01/output-y4

查看生成的文件大小,验证结果

3. hbase部署

3.1. 下载安装包

cd /u01

wget https://dlcdn.apache.org/hbase/2.6.1/hbase-2.6.1-bin.tar.gz

tar -zxvf hbase-2.6.1-bin.tar.gz

cd hbase-2.6.1

3.2. 修改配置文件

3.2.1. 修改hbase-site.xml

<configuration>

 <property>

    <name>hbase.cluster.distributed</name>

    <value>true</value>

 </property>

 <property>

    <name>hbase.rootdir</name>

    <value>hdfs://master2:9000/hbase</value>

  </property>

  <property>

    <name>hbase.tmp.dir</name>

    <value>/u01/hbase-2.6.1/tmp</value>

  </property>

  <property>

    <name>hbase.wal.provider</name>

    <value>filesystem</value>

  </property>

  <property>

    <name>hbase.io.compress.snappy.codec</name>

    <value>org.apache.hadoop.hbase.io.compress.xerial.SnappyCodec</value>

  </property>

</configuration>

3.2.2. 修改hbase-env.xml

如果启动出现SLF4J: Found binding in [jar:file:/u01/hbase-2.6.1/lib/client-facing-thirdparty/log4j-slf4j-impl-2.17.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]

则添加以下配置

export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true

export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true 这个命令的作用是设置环境变量 HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUPtrue。这意味着在启动 HBase 时,将禁用 Hadoop 类路径查找功能。

通常情况下,HBase 在启动时会尝试查找 Hadoop 的类路径,以便能够与 Hadoop 集成。但是,在某些环境中,例如在不使用 Hadoop 或者希望使用自定义配置的情况下,禁用这个功能是有意义的。通过设置此环境变量为 true,可以避免 HBase 自动查找 Hadoop 类路径,从而可能解决一些依赖性问题或者提高启动速度。

3.2.3. 添加环境变量

vim /etc/profile 或者 在/home目录中的.bashrc文件中 添加

export HBASE_HOME=/u01/hbase-2.6.1

export PATH=$PATH:$HBASE_HOME/bin

3.3. 启动hbase服务

./bin/start-hbase.sh

启动成功后,使用jps查看启动的服务有有HQuorumPeer、HMaster、HRegionServer

3.4. 验证snappy压缩

验证方法:使用hbase shell创建两张表compress_1219_3和no_compress_1219_3,一张指定使用snappy压缩,另一张不指定,然后使用hbase java api往这两张表写入相同的数据,观察表的存储大小情况

3.4.1. 建表

使用hbase shell

create 'compress_1219_3',{ NAME => 'cf', COMPRESSION => 'SNAPPY' }

create 'no_compress_1219_3',{ NAME => 'cf' }

3.4.2. 生成数据

执行两次,依次向compress_1219_3和no_compress_1219_3写数据

package com.easipass;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;

import org.apache.hadoop.hbase.TableName;

import org.apache.hadoop.hbase.client.Connection;

import org.apache.hadoop.hbase.client.ConnectionFactory;

import org.apache.hadoop.hbase.client.Put;

import org.apache.hadoop.hbase.client.Table;

import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;

public class Main {

    public static void main(String[] args) throws IOException {

        Configuration configuration = HBaseConfiguration.create();

        configuration.set("hbase.zookeeper.property.clientPort""2181");

        // 如果是集群 则主机名用逗号分隔

        configuration.set("hbase.zookeeper.quorum""192.168.68.129");

        Connection connection = ConnectionFactory.createConnection(configuration);

        //修改为compress_1219_3和no_compress_1219_3,分别执行

        Table table = connection.getTable(TableName.valueOf("compress_1219_2"));

        //rowkey

        for (int i = 1; i < 200000; i++) {

            Put put = new Put(Bytes.toBytes("H5000000"+i));

            //列簇,列名,列值

            put.addColumn(

                    Bytes.toBytes("cf"),

                    Bytes.toBytes("name"),

                    Bytes.toBytes("AAAAAAABBBB中文Hadoop、hbase使用snappy压缩"+"5000000"+i)

            );

            put.addColumn(

                    Bytes.toBytes("cf"),

                    Bytes.toBytes("age"),

                    Bytes.toBytes("AAAAAAABBBB中age文Hadoop、hbase使用snappy压缩"+"5000000"+i)

            );

            table.put(put);

        }

        table.close();

        connection.close();

    }

}

3.4.3. 从内存flush到磁盘

使用hbase shell的flush命令手动将两张表的数据从内存写到磁盘

flush 'compress_1219_3'

flush 'no_compress_1219_3'

3.4.4. 未开启压缩

查看表配置

查看region大小和表存储大小

再来查看hdfs的存储情况

第一列为一个副本的大小,第二列为3个副本占用的总存储大小

3.4.5. 开启压缩

查看表配置

查看region大小和表存储大小

共产生了一个region

再来查看hdfs的存储情况

第一列为一个副本的大小,第二列为3个副本占用的总存储大小

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

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

相关文章

【LuaFramework】LuaFramework_UGUI_V2框架学习

GitHub - jarjin/LuaFramework_UGUI_V2: 基于tolua的热更新框架V2 旧版本是Unity 5.0&#xff0c;这个是新版本支持更高版本的 导入工程后先清除wrap 然后重新生成wrap&#xff0c;你会发现有个报空null&#xff0c;框架的问题总结下所有的框架wrap相关报错问题和修复方法&…

Calcite Web 项目常见问题解决方案

Calcite Web 项目常见问题解决方案 calcite-web Authoritative front-end development resources for Calcite design initiative. Includes extendable base components and styles, as well as a modular and efficient framework for ArcGIS properties. [这里是图片001] 项…

重温设计模式--状态模式

文章目录 状态模式&#xff08;State Pattern&#xff09;概述状态模式UML图作用&#xff1a;状态模式的结构环境&#xff08;Context&#xff09;类&#xff1a;抽象状态&#xff08;State&#xff09;类&#xff1a;具体状态&#xff08;Concrete State&#xff09;类&#x…

16×16LED点阵字符滚动显示-基于译码器与移位寄存器(设计报告+仿真+单片机源程序)

资料下载地址&#xff1a;​1616LED点阵字符滚动显示-基于译码器与移位寄存器(设计报告仿真单片机源程序)​ 1、功能介绍 设计1616点阵LED显示器的驱动电路&#xff0c;并编写程序实现在1616点阵LED显示器上的字符滚动显示。1616点阵LED显示器可由4块88点阵LED显示器构成。可采…

istio配置重复的svc报错

现象&#xff1a; 两个vs中配置了同一个svc地址&#xff0c;导致其中的一个vs路由配置不生效&#xff0c;看到istiod服务的报错duplicate domain from service 解决&#xff1a; istiod服务报错日志 2024-11-13T14:54:50.39418167508:00 "pilot_vservice_dup_doma…

react 项目打包二级目 使用BrowserRouter 解决页面刷新404 找不到路由

使用BrowserRouter package 配置 &#xff08;这部分代码可以不做配置也能实现&#xff09; {"homepage": "/admin",}vite.config 配置 export default defineConfig({base: /admin])BrowserRouter 添加配置项 <BrowserRouter basename/admin>&l…

Scala图书管理系统

项目创建并实现基础UI package org.appimport scala.io.StdInobject Main {def main(args: Array[String]): Unit {var running truewhile (running) {println("欢迎来到我的图书管理系统&#xff0c;请选择")println("1.查看所有图书")println("2…

WPF+MVVM案例实战与特效(四十五)- 打造优雅交互:ListBox 的高级定制与行为触发(侧边菜单交互面板)

文章目录 1、引言2、案例效果3、案例实现1、依赖安装2、文件创建3、代码实现1、依赖引用与上下文2、个性化视觉效果:自定义 ItemContainerStyle3、页面样式与布局完整代码4、ViewModel 逻辑实现5、子界面代码:3、实现效果4、源代码获取5、总结1、引言 在WPF应用程序开发中,…

WPF+MVVM案例实战与特效(四十八)-实现一个自定义饼状图控件

文章目录 1、案例效果2、案例实现1、PieControl.xaml 代码2、样式代码如下:1、案例效果 2、案例实现 1、PieControl.xaml 代码 代码如下(示例): namespace PieControl {public class PieControl: Control

玩转OCR | 探索腾讯云智能结构化识别新境界

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀ 玩转OCR 腾讯云智能结构化识别产品介绍服务应用产品特征行业案例总结 腾讯云智能结构化识别 腾讯云智能结构化OCR产品分为基础版与高级版&am…

【习题答案】构建灵活高效的消息推送能力

判断题 1.testMessage是测试消息标识&#xff0c;False表示测试消息。 正确(True) 错误(False) 2.卡片刷新服务是建立在Form Kit&#xff08;卡片开发服务&#xff09;功能基础上的。 正确(True) 错误(False) 单选题 1.推送卡片刷新消息时&#xff0c;在正式发布阶段数量限制…

「下载」智慧城市“一网统管”总体框架全解析:整体架构、运营体系规划、具体运营内容、典型场景、运营工具平台

智慧城市“一网统管”&#xff0c;通过先进的信息技术手段&#xff0c;实现城市管理的智能化、协同化、精准化和高效化。 本文将基于《智慧城市“一网统管”运营研究报告2024》的内容&#xff0c;从发展背景及趋势、“一网统管”运营总体框架、运营体系规划、“一网统管”运营内…

七牛云短信服务

最近在开发公司内部系统&#xff0c;其中涉及到了短信业务&#xff0c;公司选择了七牛云短信服务&#xff0c;具体实现方案如下&#xff1a; 一、引入pom依赖 <!-- 七牛短信--><dependency><groupId>com.qiniu</groupId><artifactId>qi…

功能很强大的单点登录协议 SAML 2.0详解

目录 什么是 SAML 2.0 SAML 2.0 的核心概念 SAML 2.0 的工作流程 SAML 2.0 的优势 SAML 2.0 的挑战 SAML 2.0 的应用场景 小结 什么是 SAML 2.0 SAML 2.0&#xff08;Security Assertion Markup Language 2.0&#xff0c;安全断言标记语言 2.0&#xff09;是一种基于 XM…

突破续航瓶颈:数字样机技术引领新能源汽车复合制动新方向

随着我国经济快速发展和人民生活水平不断提升&#xff0c;汽车保有量截至2023年9月底就已达到了3.3亿&#xff0c;同比增长6.32%。庞大的汽车保有量对我国的环境和能源都产生了巨大的压力&#xff0c;具备节能环保优势的新能源汽车对于有效解决环境恶化和能源危机问题具有重要意…

cesium shader实现顶点动画

四面体顶点动画实现位移和旋转。 import * as Cesium from cesium;// Fragment Shader for Tetrahedron const fs in vec3 v_positionEC; in vec3 v_normalEC; in vec2 v_st; uniform vec4 color; uniform float alpha;void main() {vec3 positionToEyeEC -v_positionEC;ve…

PingCAP TiDB数据库专员PCTA认证笔记

tidb-pcta-note PingCAP TiDB数据库专员PCTA认证笔记 相关链接 官网认证中心 TiDB社区 体系架构 数据库设计 存算分离。三层架构&#xff1a;PD&#xff08;Placement Driver&#xff09;负责集群元信息管理和调度&#xff0c;TiDB负责sql计算&#xff0c;TiKV负责存储存…

建投数据与腾讯云数据库TDSQL完成产品兼容性互认证

近日&#xff0c;经与腾讯云联合测试&#xff0c;建投数据自主研发的人力资源信息管理系统V3.0、招聘管理系统V3.0、绩效管理系统V2.0、培训管理系统V3.0通过腾讯云数据库TDSQL的技术认证&#xff0c;符合腾讯企业标准的要求&#xff0c;产品兼容性良好&#xff0c;性能卓越。 …

电力通信规约-104实战

电力通信规约-104实战 概述 104规约在广泛应用于电力系统远动过程中&#xff0c;主要用来进行数据传输和转发&#xff0c;本文将结合实际开发实例来讲解104规约的真实使用情况。 实例讲解 因为个人技术栈是Java&#xff0c;所以本篇将采用Java实例来进行讲解。首先我们搭建一…

【3D打印机】启庞KP3S热床加热失败报错err6

最近天冷&#xff0c;打印机预热突然失败&#xff0c;热床无法加热&#xff0c;过了一段时间报错err6&#xff0c;查看另一篇资料说是天气冷原因&#xff0c;导致代码的PID控温部分达不到预期加热效果&#xff0c;从而自检报错&#xff0c;然后资料通过修改3D打印机代码的方式进…