CentOS下编译Hadoop

系统及软件版本准备

CentOS-6.7-64bit

Hadoop-2.8.3-src

java-1.8.0_141

apache-maven-3.3.9

protobuf-2.5.0

findbugs-1.3.9

相关软件下载地址: 链接:https://pan.baidu.com/s/1FfRRPiosrhWpRIPYtcsEgg
提取码:l84n

软件安装

1.java-1.8.0_141

下载 jdk-8u141-linux-x64.tar.gz, 解压到 /root/apps/jdk1.8.0_141。解压命令:

tar -xf jdk-8u141-linux-x64.tar.gz

配置环境变量:

vi /etc/profile

在文件最下面加上:

export JAVA_HOME=/root/apps/jdk1.8.0_141
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

添加完记得用下面的命令让其立即生效:

source /etc/profile

注意:下面每次配置完环境变量都需要使用这个命令

检查是否安装成功:

java -version

如果输出下面信息,则表示安装成功:

java version “1.8.0_141”
Java(TM) SE Runtime Environment (build 1.8.0_141-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode)

2.apache-maven-3.3.9

下载apache-maven-3.3.9-bin.zip,并使用 下面命令解压:

unzip apache-maven-3.3.9-bin.zip

我将其解压到了 /opt/software/a:pache-maven-3.3.9. 同样,配置环境变量,在/etc/profile中添加下面信息:

export MAVEN_HOME=/opt/software/apache-maven-3.3.9
export MAVEN_OPTS="-Xms256m -Xmx512m"
export PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH

验证是否安装成功:

mvn -version

出现下列信息表明安装成功:

Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /opt/software/apache-maven-3.3.9
Java version: 1.8.0_141, vendor: Oracle Corporation
Java home: /root/apps/jdk1.8.0_141/jre
Default locale: en_US, platform encoding: UTF-8
OS name: “linux”, version: “2.6.32-573.el6.x86_64”, arch: “amd64”, family: “unix”

3.protobuf-2.5.0

下载 protobuf-2.5.0.tar.gz ,解压到/opt/software/protobuf-2.5.0,接下来:

cd protobuf-2.5.0

yum install -y gcc gcc-c++ make cmake

./configure –prefix=/usr/local/protobuf

make && make install

同样导入环境变量:

export PROTOC_HOME=/usr/local/protobuf
export PATH=$PROTOC_HOME/bin:$FINDBUGS_HOME/bin:$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH

验证是否安装成功:

protoc --version

出现下面信息表明安装成功:

libprotoc 2.5.0

4. findbugs-1.3.9

下载findbugs-1.3.9.zip ,通过unzip findbugs-1.3.9.zip 解压到/opt/software/findbugs-1.3.9。

同样需要配置环境变量

export FINDBUGS_HOME=/opt/software/findbugs-1.3.9
export PATH=$FINDBUGS_HOME/bin:$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH

验证是否安装成功:

findbugs -version

出现下面信息表示安装成功:

1.3.9

5.其他依赖的安装

yum install -y openssl openssl-devel svn ncurses-devel zlib-devel libtool
yum install -y snappy snappy-devel bzip2 bzip2-devel lzo lzo-devel lzop autoconf automake

6.编译

下载hadoop-2.8.3-src.tar.gz并解压 tar -xf hadoop-2.8.3-src.tar.gz 到 /root/hadoop-2.8.3-src。运行下面命令:

cd hadoop-2.8.3-src

mvn clean package -Pdist,native -DskipTests -Dtar

编译过程中需要下载很多东西,需要很长时间,同时因为网络原因可能会一直卡在某个地方,这时可以ctrl+c中止然后重新运行上面命令。最后如果出现 BUILD SUCCESS 字样则表明编译成功.

编译好的tar包在 /root/hadoop-2.8.3-src/hadoop-dist/target/hadoop-2.8.1.tar.gz下

java IO流总结

java IO流简介

java IO流可 分为输入流 和 输出流。这里的输入和输出是相对于程序而言的,外部数据输入到程序中时,我们用输入流,程序中的数据输出到外部时,我们用输出流。

输入流又可分为字节输入流和字符输入流。字节输入流的基类为InputStream,我们常用到它的子类FileInputStream, 字符输入流的基类为Reader,我们常用到它的子类FileReader。

输出流又可分为字节输出流和字符输出流。字节输出流的基类为OutputStream,我们常用到它的子类FileOutputStream, 字符输出流的基类为Writer,我们常用到它的子类FileWriter。

Android 混淆机制

什么是混淆

  按照我的个人理解,混淆就是将代码里的包名,类名,方法名,变量名等用无意义的a,b,c等字母代替。这样做的目的是为了防止他人获取你的apk后可以轻松的反编译并读取你的源码,而加入混淆之后,反编译出的源码是很难被读懂的。详细解释可参考Android混淆是什么

加密算法与HTTPS

原文来自: 也许,这样理解HTTPS更容易

能不能用一句话总结HTTPS?

答案是不能,因为HTTPS本身实在太复杂。但是我还是尝试使用一段话来总结HTTPS:

HTTPS要使客户端与服务器端的通信过程得到安全保证,必须使用的对称加密算法,但是协商对称加密算法的过程,需要使用非对称加密算法来保证安全,然而直接使用非对称加密的过程本身也不安全,会有中间人篡改公钥的可能性,所以客户端与服务器不直接使用公钥,而是使用数字证书签发机构颁发的证书来保证非对称加密过程本身的安全。这样通过这些机制协商出一个对称加密算法,就此双方使用该算法进行加密解密。从而解决了客户端与服务器端之间的通信安全问题。

Android 系统 Settings 启动流程详解

Settings简介

  Settings 是 Android 系统自带的一个很重要的应用,给用户提供了操作 Android 系统功能的界面。它里面包含了 Wireless & network,device,personal 以及 system 等几大块的功能设置。在 Android 源码中,该应用位于 packages/apps/Settings 下。该应用的源码是相当复杂的,设计思想很是先进,很难完全讲清楚,笔者也是读了好几遍源码再综合了几篇博客才勉强懂了Settings其启动流程的大体思路。通过博客记录下来以加深理解和印象,同时分享给大家。

记一个实用的git命令---谁动了我的代码

应用场景

我们在做公司的项目的时候,代码都是大家共同编写的,通过git仓库进行管理。然而有的时候,我们写的代码会被别人修改了,而别人又没有加注释说明是某某人什么时候修改的什么功能。这时候你又想对曾经自己写的这块代码进行修改,但是你对他的代码不是很明白或者对需求不是很理解。这时最好的解决方法就是找到这个人问明白,最常见的方法是,通过git log查看提交记录,查出这笔提交的owner,但是如果是很久之前的提交,要找出来未免有些太慢了。有没有什么好的方法呢?

史上最详细的Android系统SystemUI 启动过程详细解析

Android 系统 SystemUI 介绍

Android 的 SystemUI 其实就是 Android 的系统界面,它包括了界面上方的状态栏 status bar,下方的导航栏Navigation Bar,锁屏界面 Keyguard ,电源界面 PowerUI,近期任务界面 Recent Task 等等。对于用户而言,SystemUI 的改动是最能直观感受到的。因此,每个 Android 版本在 SystemUI 上都有比较大的改动。而对开发者而言,理解 Android SystemUI 对优化Android系统界面,改善用户体验十分重要。

|