HDFS源码分析:Datanode通信分析
​  Datanode本质上也是TCPServer,一般的TCPServer接到客户端请求以后会分配一个线程处理,对于Datanode而言,这个线程可以叫做Op处理线程。每个OP线程会多次和客户端交互,中间涉及多种packet。 Op线程 写在前面 写在前面,关于proto writeDelimitedTo方法 在整个处理流程中,会非常频…
HDFS源码分析:客户端读写
​  客户端读 hdfs客户端读会先调用open方法,open会调用先getBlockLocations来获取块信息,然后通过openinternal生成DFSInputStream对象,通过DFSInputStream读数据。 getLocatedBlocks(String src, long start, long length) 客…
MapReduce之Job的提交源码分析
Wordcount的例子基本接触过hadoop都会跑过,本篇的主要分析都以Wordcount为例。我们先把etc/hadoop/下配置文件作为Wordcount的输入hadoop fs -put etc/hadoop/* /input然后打开调试运行以下命令hadoophadoop-mapreduce-examples-xxx.jar wordco…
hadoop搭建–单节点Wordcount
​本文的目的主要是让初学者快速的跑通第一个hadoop实例。 准备 1、linux环境(本人用的是64位的centos虚拟机)2、下载jdk linux版本和hadoop安装包(本人用的是jdk-7u80-linux-x64.tar.gz和hadoop-2.6.0) 安装 jdk-7u80-linux-x64.tar.gz 解压 tar zxvf …
帽子问题
面试题 今天看到在微信上有人发了这一道数学题,题目如下: 我当时看到这题一眼就认为答案是c(用的是排除法),然后我就分析了一下,发现这个题最重要的条件并不在题设中。这个条件就是:当不确定的时候不会有人举手。那我们来分析一下当时情况(每个人的想法):第一轮举手前:A:傻x老师,整个墙干嘛,我啥也看不见,还有D能看到2个人是怎么回事,偏心吗?B:傻x老…
php文件下载(解决文件下载后多几个字节的问题)
php文件下载比较常见,网上的资料比较多,在此不再强调怎么去实现(因为也是网上看的)。下面主要说明的是下载代码的注意点。php下载文件主要是把文件以字节流直接输出,也就是echo fread($file, filesize($file_name));,这里要注意的是如果你在代码之前(或之后)有输出,也可能被写入下载的文件中,解决的方法是使用ob_s…
邮件分类的难题–一致性哈希算法
问题: 小明是邮局的人事部,主要管给邮件分类的人员。最近人员调动比较大,导致遇见了以下难题。目标:确定每个员工要处理的邮件省份的分配策略。条件:1)一个员工如果长时间处理相同省份的邮件,分类效率会提高。 2)随时有员工离职或者加入,要求实时分配任务。 分析: 问题一看就是明白是散列直接的对应问题(省份散列->员工散列),很明显的应该用哈希算法…
LZ77压缩算法
LZ77算法的说明网上很多,本文为个人见解,仅供参考。 本人认为LZ77算法其实是字典压缩的一个变种,与字典压缩不同的是,它的字典是动态生成的并且只有一个,一般选取一定数量的最近压缩过数据。保存这些数据的结构叫做滑动窗口,所以LZ77有被常称作滑动窗口算法。至于这么生成字典的原因,其实很简单,因为我们认为一个要压缩的字符串很有可能与上下文相关,也就…
unicode为12288字符
今天做一个导入数据功能时发现一个问题,就是一个unicode为12288的字符显示为空格,但是用java trim()函数无法去除。测试代码如下 public class TstSeven { public static void main(String[] args) { String str = " "; printStrAscii(s…
java获取exe文件版本(跨系统版本)
exe文件版本一般用于版本管理和客户版本更新,对exe右键->属性,选择版本就能看见。如下图 如果需要再windows上使用java读取exe文件版本,推荐使用jna.jar。本jar包可以调用本地c/c++类库,非常方便就能获取到exe文件版本。但如果是在其他系统上,那就没法用了,因为本地根本就没有此类库。 跨系统读取exe文件版本其实想法…