Linux

“Linux” 是一种象征。

本节还包括了更多的 Linux 服务和运维相关的内容。

POSIX #

POSIX:可移植操作系统接口

Linux Man Pages #

https://www.kernel.org/doc/man-pages/

手册里有很多 fork(2) 的带括号和数字的文档,不同的数字表示不同的 section,section 大致分为 8 种:

有的是命令,有的是系统调用,在 shell 中通过 man man 也可以查看到。

Socket #

有几种常见的 socket 概念:

  • 一种是 Unix 进程间通信的文件 socket;
  • 一种是基于 TCP 协议的网络 socket;
  • 一种是和 socket 完全不相关的 websocket;
  • 使用 curl --unix-socket 可以监听 socket 文件地址。

大数据相关 #

Hive 和 Presto #

Facebook 的数据仓库存储在少量大型 Hadoop/HDFS 集群。Hive 是 Facebook 在几年前专为 Hadoop 打造的一款数据仓库工具。在以前,Facebook 的科学家和分析师一直依靠 Hive 来做数据分析。但 Hive 使用 MapReduce 作为底层计算框架,是专为批处理设计的。但随着数据越来越多,使用 Hive 进行一个简单的数据查询可能要花费几分到几小时,显然不能满足交互式查询的需求。Facebook 也调研了其他比 Hive 更快的工具,但它们要么在功能有所限制要么就太简单,以至于无法操作 Facebook 庞大的数据仓库。

2012 年开始试用的一些外部项目都不合适,他们决定自己开发,这就是 Presto。2012 年秋季开始开发,目前该项目已经在超过 1000 名 Facebook 雇员中使用,运行超过 30000 个查询,每日数据在 1PB 级别。Facebook 称 Presto 的性能比 Hive 要好上 10 倍多。2013 年 Facebook 正式宣布开源 Presto。

Presto实现原理和美团的使用实践