/** * 存储单位工具类 * @ClassName: StorageUnit * @author kanpiaoxue * @version 1.0 * @CreateTime: 2020/12/25 17:25:12 * @Description: * 来自于:https://github.com/apache/hadoop/blob/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/StorageUnit.java */ import java.math.BigDecimal; import java.math.RoundingMode; /** * Class that maintains different forms of Storage Units. */ public enum StorageUnit { /* * We rely on BYTES being the last to get longest matching short names * first. * The short name of bytes is b and it will match with other longer names. * if we change this order, the corresponding code in * Configuration#parseStorageUnit needs to be changed too, since values() * call returns the Enums in declared order and we depend on it. */ EB { @Override public double fromBytes(double value) { return divide(value, EXABYTES); } @Override public double getDefault(double value) { return toEBs(value); } @Override public String getLongName() { return "exabytes"; } @Override public String getShortName() { return "eb"; } @Override public String getSuffixChar() { return "e"; } @Override public double toBytes(double value) { return multiply(value, EXABYTES); } @Override public double toEBs(double value) { return value; } @Override public double toGBs(double value) { return multiply(value, EXABYTES / GIGABYTES); } @Override public double toKBs(double value) { return multiply(value, EXABYTES / KILOBYTES); } @Override public double toMBs(double value) { return multiply(value, EXABYTES / MEGABYTES); } @Override public double toPBs(double value) { return multiply(value, EXABYTES / PETABYTES); } @Override public double toTBs(double value) { return multiply(value, EXABYTES / TERABYTES); } }, PB { @Override public double fromBytes(double value) { return divide(value, PETABYTES); } @Override public double getDefault(double value) { return toPBs(value); } @Override public String getLongName() { return "petabytes"; } @Override public String getShortName() { return "pb"; } @Override public String getSuffixChar() { return "p"; } @Override public double toBytes(double value) { return multiply(value, PETABYTES); } @Override public double toEBs(double value) { return divide(value, EXABYTES / PETABYTES); } @Override public double toGBs(double value) { return multiply(value, PETABYTES / GIGABYTES); } @Override public double toKBs(double value) { return multiply(value, PETABYTES / KILOBYTES); } @Override public double toMBs(double value) { return multiply(value, PETABYTES / MEGABYTES); } @Override public double toPBs(double value) { return value; } @Override public double toTBs(double value) { return multiply(value, PETABYTES / TERABYTES); } }, TB { @Override public double fromBytes(double value) { return divide(value, TERABYTES); } @Override public double getDefault(double value) { return toTBs(value); } @Override public String getLongName() { return "terabytes"; } @Override public String getShortName() { return "tb"; } @Override public String getSuffixChar() { return "t"; } @Override public double toBytes(double value) { return multiply(value, TERABYTES); } @Override public double toEBs(double value) { return divide(value, EXABYTES / TERABYTES); } @Override public double toGBs(double value) { return multiply(value, TERABYTES / GIGABYTES); } @Override public double toKBs(double value) { return multiply(value, TERABYTES / KILOBYTES); } @Override public double toMBs(double value) { return multiply(value, TERABYTES / MEGABYTES); } @Override public double toPBs(double value) { return divide(value, PETABYTES / TERABYTES); } @Override public double toTBs(double value) { return value; } }, GB { @Override public double fromBytes(double value) { return divide(value, GIGABYTES); } @Override public double getDefault(double value) { return toGBs(value); } @Override public String getLongName() { return "gigabytes"; } @Override public String getShortName() { return "gb"; } @Override public String getSuffixChar() { return "g"; } @Override public double toBytes(double value) { return multiply(value, GIGABYTES); } @Override public double toEBs(double value) { return divide(value, EXABYTES / GIGABYTES); } @Override public double toGBs(double value) { return value; } @Override public double toKBs(double value) { return multiply(value, GIGABYTES / KILOBYTES); } @Override public double toMBs(double value) { return multiply(value, GIGABYTES / MEGABYTES); } @Override public double toPBs(double value) { return divide(value, PETABYTES / GIGABYTES); } @Override public double toTBs(double value) { return divide(value, TERABYTES / GIGABYTES); } }, MB { @Override public double fromBytes(double value) { return divide(value, MEGABYTES); } @Override public double getDefault(double value) { return toMBs(value); } @Override public String getLongName() { return "megabytes"; } @Override public String getShortName() { return "mb"; } @Override public String getSuffixChar() { return "m"; } @Override public double toBytes(double value) { return multiply(value, MEGABYTES); } @Override public double toEBs(double value) { return divide(value, EXABYTES / MEGABYTES); } @Override public double toGBs(double value) { return divide(value, GIGABYTES / MEGABYTES); } @Override public double toKBs(double value) { return multiply(value, MEGABYTES / KILOBYTES); } @Override public double toMBs(double value) { return value; } @Override public double toPBs(double value) { return divide(value, PETABYTES / MEGABYTES); } @Override public double toTBs(double value) { return divide(value, TERABYTES / MEGABYTES); } }, KB { @Override public double fromBytes(double value) { return divide(value, KILOBYTES); } @Override public double getDefault(double value) { return toKBs(value); } @Override public String getLongName() { return "kilobytes"; } @Override public String getShortName() { return "kb"; } @Override public String getSuffixChar() { return "k"; } @Override public double toBytes(double value) { return multiply(value, KILOBYTES); } @Override public double toEBs(double value) { return divide(value, EXABYTES / KILOBYTES); } @Override public double toGBs(double value) { return divide(value, GIGABYTES / KILOBYTES); } @Override public double toKBs(double value) { return value; } @Override public double toMBs(double value) { return divide(value, MEGABYTES / KILOBYTES); } @Override public double toPBs(double value) { return divide(value, PETABYTES / KILOBYTES); } @Override public double toTBs(double value) { return divide(value, TERABYTES / KILOBYTES); } }, BYTES { @Override public double fromBytes(double value) { return value; } @Override public double getDefault(double value) { return toBytes(value); } @Override public String getLongName() { return "bytes"; } @Override public String getShortName() { return "b"; } @Override public String getSuffixChar() { return "b"; } @Override public double toBytes(double value) { return value; } @Override public double toEBs(double value) { return divide(value, EXABYTES); } @Override public double toGBs(double value) { return divide(value, GIGABYTES); } @Override public double toKBs(double value) { return divide(value, KILOBYTES); } @Override public double toMBs(double value) { return divide(value, MEGABYTES); } @Override public double toPBs(double value) { return divide(value, PETABYTES); } @Override public double toTBs(double value) { return divide(value, TERABYTES); } }; private static final double BYTE = 1L; private static final double KILOBYTES = BYTE * 1024L; private static final double MEGABYTES = KILOBYTES * 1024L; private static final double GIGABYTES = MEGABYTES * 1024L; private static final double TERABYTES = GIGABYTES * 1024L; private static final double PETABYTES = TERABYTES * 1024L; private static final double EXABYTES = PETABYTES * 1024L; private static final int PRECISION = 4; /** * Using BigDecimal to avoid issues with overflow and underflow. * * @param value * - value * @param divisor * - divisor. * @return -- returns a double that represents this value */ private static double divide(double value, double divisor) { BigDecimal val = new BigDecimal(value); BigDecimal bDivisor = new BigDecimal(divisor); return val.divide(bDivisor).setScale(PRECISION, RoundingMode.HALF_UP).doubleValue(); } /** * Using BigDecimal so we can throw if we are overflowing the Long.Max. * * @param first * - First Num. * @param second * - Second Num. * @return Returns a double */ private static double multiply(double first, double second) { BigDecimal firstVal = new BigDecimal(first); BigDecimal secondVal = new BigDecimal(second); return firstVal.multiply(secondVal).setScale(PRECISION, RoundingMode.HALF_UP).doubleValue(); } public abstract double fromBytes(double value); public abstract double getDefault(double value); public abstract String getLongName(); public abstract String getShortName(); public abstract String getSuffixChar(); public abstract double toBytes(double value); public abstract double toEBs(double value); public abstract double toGBs(double value); public abstract double toKBs(double value); public abstract double toMBs(double value); public abstract double toPBs(double value); @Override public String toString() { return getLongName(); } public abstract double toTBs(double value); }
相关推荐
020 结合WordCount实例讲解Hadoop的数据存储和数据计算 021 Hadoop 五大服务与配置文件中的对应关系 022 分析Hadoop 三种启动停止方式的Shell 脚本 023 去除警告【Warning$HADOOP HOME is deprecated。】 024 Hadoop...
本书从Hadoop的缘起开始,由浅入深,结合理论和实践,全方位地介绍Hadoop这一高性能处理海量数据集的理想工具。全书共16章,3个附录,涉及的主题包括:Haddoop简介;MapReduce简介;Hadoop分布式文件系统;Hadoop...
第1章 初识Hadoop 数据!数据! 数据存储与分析 与其他系统相比 关系型数据库管理系统 网格计算 志愿计算 1.3.4 Hadoop 发展简史 Apache Hadoop和Hadoop生态圈 第2章 关于MapReduce 一个气象数据集 数据的格式 使用...
1649.2.2 获得命令行工具 1669.2.3 准备SSH密钥对 1689.3 在EC2上安装Hadoop 1699.3.1 配置安全参数 1699.3.2 配置集群类型 1699.4 在EC2上运行MapReduce程序 1719.4.1 将代码转移到Hadoop集群上 1719...
尤其适用于大数据系统,Hadoop为苹果、eBay、LinkedIn、雅虎和Facebook等公司提供重要软件环境。它为开发者进行数据存储、管理以及分析提供便利的方法。 《Hadoop硬实战》收集了85个问题场景以及解决方案的实战演练...
2.4.6 BlockPlacementPolicyWithNo deGroup 继承类……………………·· …… …….. 84 2.4.7 副本放置策略的结果验证… …… ..... . ... . … … …………………………………… 85 2.5 HDFS 内部的认证机制……...
Hive是Hadoop中的一个重要子项目,最早由Facebook设计,是建立在Hadoop基础上的数据仓库架构,它为数据仓库的管理提供了许多功能,包括:数据ETL(抽取、转换和加载)工具、数据存储管理和大型数据集的查询和分析...
cp ~/etc/hadoop/conf:./rmstateutils-1.0-SNAPSHOT-jar-with-dependencies.jar org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateCopy fs zkHadoop conf dir和“带有依赖项的jar”必须存在于类路径...
通过指定目录进行多线程执行合并小文件程序,由于hdfs小文件过多,可用于自定义合并orc小文件。
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能(HQL); 其本质是将SQL转换为MapReduce的任务进行运算,底层由HDFS来提供数据的存储,hive可以理解为一个将...
该程序将一个数组从映射器传递给化简器,为了传递数组,需要扩展 ArrayWritable 类以指定存储在数组中的值的类型 Hadoop 传递 jar: 该程序将 jar 文件作为命令行参数并在映射器中使用它。 为此,必须使用工具转轮...
前言 致谢 关于本书 第1 部分 背景和基本原理 1 跳跃中的Hadoop 1.1 什么是Hadoop ...附录B Hadoop 内置的数据导入导出工具 附录C HDFS 解剖. 附录D 优化MapReduce 合并框架 索引 收起全部↑
NoSQL数据库:NoSQL数据库(如MongoDB、Cassandra等)则更适用于处理这类数据。 数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:...
HBase的设计思想来源于Google的BigTable论文,是一个面向列式存储的分布式数据库。 HBase底层存储基于HDFS实现,集群的管理基于ZooKeeper实现。其良好的分布式架构设计为海量数据的快速存储和随机访问提供了可能。...
使用高级Hadoop概念设计,构建和执行有效的大数据策略Apache Hadoop是用于分布式存储和数据处理的最受欢迎的大数据解决方案之一。 该学习路径将使您能够轻松地使用Hadoop以及一系列其他大数据工具来构建解决方案。 ...
它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 QL,它允许熟悉 SQL 的用户查询数据。...
NoSQL数据库:NoSQL数据库(如MongoDB、Cassandra等)则更适用于处理这类数据。 数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:...
NoSQL数据库:NoSQL数据库(如MongoDB、Cassandra等)则更适用于处理这类数据。 数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:...
NoSQL数据库:NoSQL数据库(如MongoDB、Cassandra等)则更适用于处理这类数据。 数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:...
NoSQL数据库:NoSQL数据库(如MongoDB、Cassandra等)则更适用于处理这类数据。 数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:...