Shark

Shark Overview

一个独立,快速,类MapReduce的SQL引擎

  • 基于内存存储数据,适合交互式查询
  • 优秀的查询优化
  • 比Hadoop快40倍以上

完全兼容Hadoop存储接口

  • 可以读取或写入任何支持Hadoop的系统
  • 包括HDFS,Hbase,SequenceFiles

Shark Overview

  • Shark即Hive on Spark,本质上是通过Hive的HQL解析,把HQL翻译成Spark上的RDD操作,然后通过Hive的metadata获取数据库里的表信息,实际HDFS上的数据和文件,会由Shark获取并放到Spark上运算。

  • Shark建立在Hive的代码基础上,并通过将Hive的部分物理执行计划交换出来(by swapping out the physical execution engine part of Hive)。这个方法使得Shark的用户可以加速Hive的查询

  • Shark在HQL方面重用了Hive中HQL的解析、逻辑执行计划翻译、执行计划优化等逻辑,完全兼容已有的Hive数据,metastores 和 查询( HiveQL,UDFs )


Project History

  • Spark project …

Read More

Energy measurements in Linux

RAPL

RAPL provides a set of counters providing energy and power consumption information. RAPL is not an analog power meter, but rather uses a software power model. This software power model estimates energy usage by using hardware performance counters and I/O models. Based on our measurements, they match actual …

Read More

Ubuntu 16.04 下 CPU 频率与功耗关系

硬件环境

实验服务器搭载两颗 Intel E5645 处理器,24块 SAS+SATA 机械硬盘。E5645 为 6 核处理器,并支持超线程技术(Intel® Hyper-Threading Technology),服务器共 24 个逻辑核,基本时钟频率为 2.40 GHz 。

软件环境

Ubuntu Server 16.04.1 LTS

CPU 频率驱动程序与工具

操作系统通过CPU调频可以根据负载动态调节CPU工作频率,达到省电的目的。这个过程可以自动进行,也可以由用户空间(userspace)程序手动调节。Linux 内核实现了CPU 调频,该驱动被称为 CPUfreq, 从 3.4 内核开始,内核会自动载入相应的内核模块,默认的频率调频器 …

Read More

使用redsocks把shadowsocks转为全局代理

前言

shadowsocks是个非常棒的翻墙代理,它可以在本地提供一个socks5端口供软件使用代理。比如启动chrome的时候加上--proxy-server="socks5://myproxy:1080"这条参数就可以让chrome走代理;然而,有些软件不支持设置代理的功能。所以有时候,我们需要一个全局代理的环境,使用VPN是一个通常的选择,不过一般购买的VPN的速度不如shadowsocks,同时,VPN更容易受到GFW的干扰。为什么不把正在使用的shadowsocks利用起来作为一个全局代理呢?

本文介绍了一种利用redsocks与iptables实现全局代理的方法,其基本原理如下:

  1. iptables的规则将所有tcp包转发到redsocks打开的本地端口
  2. redsocks接收tcp包并转发给shadowsocks打开的本地socks端口
  3. shadowsocks将接收的包转发给远端的代理服务器

由于使用了redsocks与iptables,因此本文的方法仅适用于Linux。

安装

由于使用的是Arch Linux,我直接通过AUR安装

$ yaourt redsocks

通过yaourt搜索redsocks包,然后选择你要安装的包的序号就可以进行安装了。

注意:下文中的配置文件的路径全部基于Arch Linux,如果你用的不是Arch Linux,请根据自己的情况更改。

其他发行版可以通过各自的包管理器或者下载源码安装

配置

配置redsocks

我在包提供的原有配置的基础上进行了一些修改,主要是把 redsocks …

Read More

Hadoop 安装笔记

The building blocks of Hadoop

  • NameNode
  • DataNode
  • Secondary NameNode
  • ~~JobTracker~~
  • ~~TaskTracker~~
  • ResourceManager
  • NodeManager

Screenshot_20161117_185744

Screenshot_20161117_190357

NameNode

NameNode主要是用来保存HDFS的元数据信息,比如命名空间信息,块信息等。当它运行的时候,这些信息是存在内存中的。但是这些信息也可以持久化到磁盘上。没有Namenode,HDFS就不能工作。事实上,如果运行namenode的机器坏掉的话,系统中的文件将会完全丢失,因为没有其他方法能够将位于不同datanode上的文件块(blocks)重建文件。因此,Hadoop存在单点故障。为了解决单点故障,Hadoop提供了两套机制:

  1. 第一种方式是将持久化存 储在本地硬盘的文件系统元数据备份。Hadoop可以通过配置来让Namenode将他的持久化状态文件写到不同的文件系统中。一般是镜像到网络文件系统或单独的磁盘中。
  2. 第二种方式是运行一个辅助的Namenode(Secondary Namenode)。下面会具体说明。

DataNode

Datanode是文件系统的工作节点,他们根据客户端或者是namenode的调度存储和检索数据,并且定期向namenode发送他们所存储的块(block)的列表

集群中的每个服务器都运 …

Read More

使用LuCI的RPC接口修改openwrt配置

简单来说,本文整理了一些openwrt的RPC接口,用来自动修改pppoe的密码,并重启网络。为什么要弄这些玩意呢,因为浙江高校中普遍使用的蛋疼的闪讯——两三天换个动态密码,时不时给你断个网!使用这些API的是一个Android应用,它在用户按下一个按键后自动向电信发送一条获取密码的短信,然后获取返回的短信,解析其中的闪讯动态密码,通过openwrt的RPC接口修改密码并重启网络,这样,只需要一次按按钮的操作,就能恢复网络,又可以愉快的玩耍啦。

openwrt 我就不多介绍了,玩路由器的都知道;UCIopenwrt提供的一套统一的配置接口,可以用以配置整台openwrt设备;而LuCI是一个基于Lua语言开发的、包装了底层UCI接口的易于使用的Web用户接口。LuCI也提供了一种基于JSON格式的RPC机制来访问其内部的库。

LuCI的RPC接口的地址为 /cgi-bin/luci/rpc/LIBRARY,其中LIBRARY代表按功能区分的几个库,分别为:

  • auth - 基于token的认证库
  • uci - UCI统一配置接口的映射
  • fs - 文件操作
  • sys …

Read More

使用Python求解分隙ALOHA最大效率

SymPy是一个符号计算的Python库,SymPy支持符号计算、高精度计算、模式匹配、绘图、解方程、微积分、组合数学、离散数学、几何学、概率与统计、物理学等方面的功能。下面我将基于它求解以下两个问题。

  1. 当有N个活跃节点的时候,分隙ALOHA的效率为 \(N p (1 - p)^{N - 1}\) ,找出使这个表达式最大化的p值。

  2. 采用 1 中的p值,计算当 N 趋近于无穷时分隙ALOHA的效率。

from sympy import *

首先导入sympy库,方便起见,导入了所有内容。

N = Symbol('N')
p = Symbol('p')

在SymPy中,数学符号是Symbol类的对象,要明确声明符号变量,我们新建了Np符号 …

Read More