今天开始学习Hadoop这门热门的数据库技术。直接从被奉为Hadoop圣经的《Hadoop The Definitive Guide 4th Edition》入手。第一章作者写到一个关于分布型数据库系统在处理数据分割时的两种方法:1)按照某个单位(诸如年份或者数值范围);2)均匀分割所有数据到若干份(分布式计算机的数量);

第一种方法可能的问题是分割后数据块的大小不一,像以年份为例,很可能出现最小份和最大份的数量级差异很大。这样最后那个最大的就会成为其他任务的等待。第二种方法的问题是实现起来要比第一种方法复杂,因为均匀分割需要计算好每个块的边界。两种方法都需要在子节点结算完后找一个地方进行数据汇总再做最后的计算,虽然这时候可能数据集经过子节点的计算后可能已经是一个相对较小的结果集了,可是要在哪汇总,哪一台机器上汇总是一个问题?

第二种方法显然比第一种方法具有优势。假设第一种方法以年份为单位,万一我现在分析的只是单个年份的数据,难不成只能用一台机器来运算?第二种方法相对灵活。但是我觉得它也不是万能的,实现起来的话其实还是挺难的,分割的规则不一,比如运算一是需连续聚合某一列,这样数据需要先通过排序后再累加某一列的数值,这样是不是意味着这个数据集必须被事先排序后分割,这个开销岂不是很大?

不知道MapReduce具体是怎么去实现这样的运算的。这里先做下笔记。

Hadoop ->> 关于数据分割(Data Split)的思考的更多相关文章

  1. jQuery1.9.1源码分析--数据缓存Data模块

    jQuery1.9.1源码分析--数据缓存Data模块 阅读目录 jQuery API中Data的基本使用方法介绍 jQuery.acceptData(elem)源码分析 jQuery.data(el ...

  2. jQuery源代码学习之六——jQuery数据缓存Data

    一.jQuery数据缓存基本原理 jQuery数据缓存就两个全局Data对象,data_user以及data_priv; 这两个对象分别用于缓存用户自定义数据和内部数据: 以data_user为例,所 ...

  3. mysql导入数据load data infile用法

    mysql导入数据load data infile用法 基本语法: load data [low_priority] [local] infile 'file_name txt' [replace | ...

  4. android登录实现,存储数据到/data/data/包名/info.txt

    1.一个简单登录界面布局代码如下: @1采用线性布局加相对布局方式 @2线性布局采用垂直排列 <?xml version="1.0" encoding="utf-8 ...

  5. 字符串分割方法split()函数

    >>> data = '1000,小甲鱼,男'>>> data.split(',')['1000', '小甲鱼', '男'] str.split('以什么为标志进行 ...

  6. 【HADOOP】| 环境搭建:从零开始搭建hadoop大数据平台(单机/伪分布式)-下

    因篇幅过长,故分为两节,上节主要说明hadoop运行环境和必须的基础软件,包括VMware虚拟机软件的说明安装.Xmanager5管理软件以及CentOS操作系统的安装和基本网络配置.具体请参看: [ ...

  7. Hadoop大数据部署

    Hadoop大数据部署 一. 系统环境配置: 1. 关闭防火墙,selinux 关闭防火墙: systemctl stop firewalld systemctl disable firewalld ...

  8. Hadoop大数据通用处理平台

    1.简介 Hadoop是一款开源的大数据通用处理平台,其提供了分布式存储和分布式离线计算,适合大规模数据.流式数据(写一次,读多次),不适合低延时的访问.大量的小文件以及频繁修改的文件. *Hadoo ...

  9. FAT32文件系统学习(3) —— 数据区(DATA区)

    FAT32文件系统学习(3) —— 数据区(DATA区) 今天继续学习FAT32文件系统的数据区部分(Data区).其实这一篇应该是最有意思的,我们可以通过在U盘内放入一些文件,然后在程序中读取出来: ...

随机推荐

  1. 最小生成树----prim算法的堆优化

    题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出orz 输入输出格式 输入格式: 第一行包含两个整数N.M,表示该图共有N个结点和M条无向边.(N<=5000,M<= ...

  2. AES/ECB/NoPadding 加减密

    package unit; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import org.apache. ...

  3. [转] 利用shell创建文本菜单与窗口部件的方法

    [From] http://www.jb51.net/article/129460.htm 前言 创建交互式shell脚本最常用的方法是使用菜单.提供各种选项可以帮助脚本用户了解脚本能做什么,不能做什 ...

  4. linux下忘记mysql的root密码

    一.处理方案 #1. 结束当前正在运行的mysql进程 /etc/init.d/mysql stop #2. 用mysql安全模式运行并跳过权限验证 mysqld_safe --user=mysql ...

  5. selenium模块的而简单使用

    一.seleniu的简单使用 1.简单使用 ''' selenium:基于浏览器的自动化操作模块 通过代码定制一些浏览器自动化操作,然后把该操作作用到浏览器 1.pip install seleniu ...

  6. PIE SDK均值滤波

    1.算法功能简介 均值滤波是最常用的线性低通滤波,它均等地对待邻域中的每个像素.对于每个像素,取邻域像素值的平均作为该像素的新值.均值滤波算法简单,计算速度快,对高斯噪声比较有效.从频率域的角度看,相 ...

  7. querySelectorAll与childNodes

    NodeList 对象是一个节点的集合,是由 Node.childNodes 和 document.querySelectorAll 返回的. html代码: <ul id="pare ...

  8. (转)SSH批量分发管理&非交互式expect

    目录 1 SSH批量分发管理 1.1 测试环境 1.2 批量管理步骤 1.3 批量分发管理实例 1.3.1 利用sudo提权来实现没有权限的用户拷贝 1.3.2 利用sudo提权开发管理脚本 1.3. ...

  9. js中函数带不带var的本质区别是什么

    本质区别是:带var的是定义,属于statement:不带var的是赋值,属于expression.不带var时,解释器认为变量已经定义过了,会在函数中找相应的定义,如果找不到,就会认为变量是在外一层 ...

  10. React.js 小书 Lesson8 - 组件的组合、嵌套和组件树

    作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson8 转载请注明出处,保留原文链接和作者信息. 继续拓展前面的例子,现在我们已经有了 Heade ...