ScalaPie's Blog

以梦为马 诗酒趁年华

Hadoop之2-HDFS的架构原理

———数据读写流程

HDFS主要是为了解决海量数据的存储问题。通过采用分布式集群架构,将海量数据分散在不同的机器上。 1. HDFS特点 集群,多台机器共同协作完成存储 主从架构设计 2. 主节点(namenode)- 领导 文件元数据 文件名称 文件位置 副本数 拥有者、组、权限(对照unix文件的属性来理解) 存储块 各个块在哪些datanode节点上 …. 3. 从节点(datanode)- 随从 DataNo

Hadoop之1-初识Hadoop

———Hadoop生态圈简介

The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up

此生挚友Scala之4-值类型

———AnyValue Types

本文将衔接之前的文章,来深入的介绍值类型(AnyVal)。 1. 简单回顾 在讲值类型之前,先简单的回顾下之前讲过的Scala类型体系大图: 2. 数值类型 注意点: 位数:位数不同,代表着储存的数据范围的不同,比如说你不能把9999999赋值给一个Byte类型,因为Byte能储存的最大值是127,最小值是-128 精度:决定了小数的取值范围 依次从低级到高级,低级可以自动转换为高级,但是高级不能

此生挚友Scala之3-值类型和引用类型的区别

———兼论述堆和栈

这里接着上一篇讲scala数据类型的文章,继续往下谈。 说到Scala值类型和引用类型的最大区别,我想是如下二点: 值类型(AnyVal)既可以作为JVM的基本类型在栈中分配内存,也可在运行时作为对象在堆中分配内存 引用类型(AnyRef)则只能作为对象在堆中分配内存 由于内存分配方式的不同,会导致诸如效率、自由度等等方方面面的不同。下面会详细介绍。 1. 值类型(AnyVal)和引用类型(Any

此生挚友Scala之2-数据类型概述

———Scala类型体系的逻辑

说句不要脸的话,这应该是史上最真诚的介绍Scala数据类型相关的文章系列了吧。 说句实在话,数据类型在每个编程语言里面都应该是基本的存在。但是面试过几个小朋友,发现有蛮多对于数据类型的理解还处于很模棱两可的状态。类型这个东西很重要,但是它就像空气和水一样,平时不会太在意因为太过于习惯它的存在,所以会忽略。如果不理解类型,是无法理解语言创造者们,是如何一步步通过基础类型和各种规则/规范,构建起语言的

深入理解ClickHouse之8-数据FORMAT

———CH支持的常用数据IO格式

前面其实已经提到过,ClickHouse是支持将外部数据插入到数据库的,也支持直接查询外部数据文件,同时支持将查询结果直接写入到文件中,这些都需要用到FORMAT参数。虽然这些功能已经非常强大了,但是个人觉得CH对IO数据格式的支持还是离Python等很远很远(不管是广度还是读取识别的准确性)。 下面会从FORMAT的应用和支持的FORMAT两个方面来展开本文。 1. FORMAT的应用 1)外部

此生挚友Scala之1-我和函数式编程的孽缘

———严于律己的程序员太少,这也许是FP火不起来的原因吧

其实直到现在我对函数式编程都还是云里雾里的,没完全搞清白。但是这完全阻止不了我继续探索的决心和热情。 提到函数式编程,大家提到的无非以下几点: 无副作用(no side effect) 引用透明(referential transparency),易测试,少bug 容易推理(reasoning) 可组合(composable),易扩展 语法可能鬼画符(各种你想得到的想不到的符号),但是语法精炼不啰

深入理解ClickHouse之7-本地表和分布式表

———分布式表只是一个view,它本身并不存储数据e

本文主要讲解ClickHouse中数据表的创建过程,并与之前所讲的集群replica实现方式相呼应。由于涉及到建表、写入数据等内容,从实务角度来讲,本文的内容应该是非常重要的。 由于用例子说比较具体,光说理论太抽象,因此这里会用一个数据集来配合讲解本节的内容。数据集在 我的github,大家可自行下载 。(注:这个数据集来自于一个俄罗斯小哥哥,我在他的基础上作了一些精简,谢谢他) 1. 先任选一台

深入理解ClickHouse之6-表引擎及作用

———the robust MergeTree Family table engine

前面其实已经提到过ReplicatedMergeTree表引擎了。个人认为ClickHouse之所以变态跟它的表引擎有非常大的关系,而表引擎中又以聚合树家族的表引擎最为健硕。试想一下,数据在存储的时候又有分区又有索引,访问的时候能不快嘛。 由于MergeTree是ClickHouse表引擎中最重要的,因此本文将分为两个部分来介绍表引擎,一部分是其它表引擎(简单介绍和理解即可),另一部分是Merge

深入理解ClickHouse之5-ClickHouse集群的replica实现方式

————数据备份和同一性

首先需要明确的一点是,ClickHouse是可以在不借助任何外力的情况下实现表数据复制的,但是问题在于这样做的可靠性很低。为了提高可靠性,需引入zookeeper来守卫数据一致性。这也就呼应了上一篇中为何要配置zookeeper这个话题了。 ClickHouse有两种方式来实现数据同步和复制,下面来一一解释这两种方式是怎么回事儿。 1. 使用ClickHouse内置的同步方式 其实这种方式在上一章