关于lzopjava源码的信息

博主:adminadmin 2022-12-05 16:36:24 74

本篇文章给大家谈谈lzopjava源码,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

如何编译 cm12

CN:准备编译

EN:Preparing System for Build

CN:通过APT-GET,安装以下d软件包

EN:Install the following items via apt-get.

Code:

sudo apt-get install bison build-essential curl flex git gnupg gperf libesd0-dev libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop openjdk-6-jdk openjdk-6-jre pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev

CN:如果是32位系统,清不要安装g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev

EN:As per the instructions on the wiki for building CM, if you use a 32bit system, do not install g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev.

CN:安装最新版本JDK

EN:Install the latest version of Java's development kit using the following.

Code:

sudo apt-get install openjdk-7-jdk

CN:安装ADT

EN:Install the Android Development Kit using the following.

Code:

sudo apt-get install android androidsdk-uiautomatorviewer android-copyright android-src-vendor android-emulator android-tools-adb android-headers android-tools-adbd androidsdk-ddms android-tools-fastboot androidsdk-hierarchyviewer android-tools-fsutils androidsdk-traceview

CN:执行以下指令

EN:Run the following in terminal.

Code:

mkdir -p ~/bin

curl storage.googleapis.com/git-repo-downloads/repo ~/bin/repo

chmod a+x ~/bin/repo

CN:重启系统,加载配置文件

EN:reboot your system or use the following in terminal to load the .profile file again.

Code:

. ~/.profile

CN: 获取源码

EN:Getting the source code.

CN:执行以下命令,获取CM12的源码

EN:Now we can get onto grabbing the source code of CM12.

Run the following in terminal.

Code:

mkdir ~/cm

cd ~/cm

repo init -u git://github.com/CyanogenMod/android.git -b cm-12.0

mkdir .repo/local_manifests

nano .repo/local_manifests/local_manifests.xml

CN: 当NANO打开之后,粘贴下面的内容,然后用ctrlx保存

When nano appears, paste the following into it and then exit using ctrl-x and choose to save.

Code:

?xml version="1.0" encoding="UTF-8"?

manifest

project name="CyanogenMod/android_device_oneplus_bacon" path="device/oneplus/bacon" remote="github" /

project name="CyanogenMod/android_device_qcom_common" path="device/qcom/common" remote="github" /

project name="CyanogenMod/android_device_oppo_msm8974-common" path="device/oppo/msm8974-common" remote="github" /

project name="CyanogenMod/android_device_oppo_common" path="device/oppo/common" remote="github" revision="cm-12.0" /

project name="CyanogenMod/android_kernel_oneplus_msm8974" path="kernel/oneplus/msm8974" remote="github" /

project name="TheMuppets/proprietary_vendor_oppo" path="vendor/oppo" remote="github" /

project name="TheMuppets/proprietary_vendor_oneplus" path="vendor/oneplus" remote="github" /

project name="CyanogenMod/android_frameworks_opt_connectivity" path="frameworks/opt/connectivity" remote="github" revision="cm-11.0" /

/manifest

CN: 执行以下代码,继续获取代码

EN:Continue getting the code using the following.

Code:

repo sync

cd vendor/cm

./get-prebuilts

cd ../..

CN: 编译 CM12

EN:Building CM12

Run the following commands to build CyanogenMod.

如何自己开发一套服务器管理系统

转载 表面上看,是一套基于B/S方式实现的分布式管理系统,但其实背后的架构是基于C/S完成的。你以为他是一只鞋吗?其实他是一个吹风机。作为界面化的系统,浏览器框架是不可或缺的,但更加重要的东西在Socket上面。

一、需要解决中央控制端到各节点服务器之间的通信。

这个其实牵扯到一个通信协议的问题,各语言都有自己的socket,thread的库,直接调用即可。但是这个通信协议就需要自己来完成了。既不能太简单,太简单了,明码传输,如果别人获知了这个接口,就很容易执行一些令人讨厌的操作。也不能太复杂,太复杂了等于是给自己找麻烦,所以简单的数据包编解码的工作或者用token验证的方式是需要的。通信协议起码要两种,一种是传输命令执行的协议,一种是传输文件的协议。

二、跨语言的socket通信

为什么要跨语言,主控端和代理端通信,用什么语言开发其实无所谓。但是为了给自己省事,尽可能使用服务器上已经有了的默认语言,Ambari前期采用php+puppet的方式管理集群,这不是不可以,puppet自己解决了socket通信协议和文件传输的问题,可你需要为了puppet在每台服务器上都安装ruby。我是个有点服务器和代码洁癖的人。光是为了一个puppet就装个ruby,我觉得心里特对不起服务器的资源。所以我自己写了一个python的代理端。python是不管哪个linux系统在安装的时候就都会有了。然后主控端的通信,可以用python实现,也可以用php实现,但是考虑到对于更多的使用者来说,改php可能要比改tornado简单许多,所以就没用python开发。hadoop分支版本众多,发布出去,用户要自己修改成安装适合自己的hadoop发行版,就势必要改源码,会php的明显比会python的多。php里面的model封装了所有的操作,而python只是个操作代理人的角色而已。

所以也延伸出一个问题,什么语言用来做这种分布式管理系统的代理端比较合适,我自己觉得,也就是python比较合适了,操作系统自带,原生的package功能基本够用。用java和php也可以写agent,但是你势必在各节点预先就铺设好jre或者php运行环境。这就跟为什么用python和java写mapred的人最多是一样的。没人拦着你用nodejs写mapred,也可以写,就是你得在每个节点都装v8的解释引擎,不嫌麻烦完全可以这样干。原理参看map/reduce论文,不解释。perl也是操作系统原生带的,但是perl的可维护性太差了,还是算了吧。

所以这就牵扯到一个跨语言的socket问题,理论上来说,这不存在什么问题。但这是理论上的,实际开发过程中确实存在问题,比如socket长连接,通信数据包在底层的封装方式不同。我没有使用xml-rpc的原因之一就是我听说php的xmlrpc跟其他语言的xmlrpc有不同的地方,需要修改才能用,我就没有用这种办法。最早是自己定义的操作协议,这时就遇到了这些问题,所以后来直接采用了thrift方式。就基本不存在跨语言的socket通信问题了。

三、代理端执行结果的获取

无论命令还是文件是否在代理端执行成功,都需要获取到执行结果返回给中央端。所以这里也涉及一个读取节点上的stdout和stderr的问题。这个总体来说不是很难,都有现成的包。当然这个时候你需要的是阻塞执行,而不能搞异步回调。

还有个问题是,我要尽可能使用python默认就带的包,而尽量不让服务器去访问internet下载第三方的包。

还有代理端最重要的一点,就是python的版本兼容性。centos5用python 2.4,centos6用python 2.6,ubuntu基本默认都是2.7。所以一定要最大限度的保证语言的跨版本兼容性,要是每个操作系统和每一个版本我都写一个代理,我一个人就累死了。

四、浏览器端的model,view,controller

这里面你要封装好所有的通信协议,以及需要在节点上面执行的脚本。发送文件的操作和数据库操作也要在model里面完成。

如果对tcl/tk很熟,也可以写基于操作系统界面方式的管理,不用浏览器就是了。

view对我来说是最痛苦的事,都是现学的jQuery怎么用,前端的工作太可怕了。关于这方面,没有太多可描述的,html和js带给我的只有痛苦的回忆,万恶的undefined。

五、跨操作系统的安装文件封装。

要适应不同的操作系统也是个很麻烦的事情,需要用agent提前获知操作系统的发行分支,版本号。然后去找到对应的安装文件去执行。你不能保证一个分布式系统的集群中所有的节点都可以访问internet,更多的情况是这些节点都存在在一个安全的内网中。只有个别几个节点是可以访问外网的。所以,我势必要把所有的安装文件以及他们的依赖尽可能集中起来。我不确定安装操作系统的lzo,yum或者apt-get会去下什么鬼东西,甚至无论是yum还是apt-get,里面都没有hadoop-lzo的库文件。所以,最好的办法是自己编译打包rpm和deb包。直接安装就好了,别去找repo下载什么。

这就是第五步工作,把需要的依赖的东西自己编译打包成rpm和deb。

deb包很好解决,但是rpm就没那么好办了,需要学习rpm的编译文件如何编写,这块是挺麻烦的,但是这玩意用好了还是挺不错的。现在我自制的安装包里面就已经包含了自己编译的lzo和snappy两种压缩库,以及hadoop-gpl-packaging的rpm和deb。下一个发布的easyhadoop将直接支持centos5,6,suse,以及ubuntu/debian的系统上安装hadoop。已经自带了lzo和snappy以及lzop和snzip。

六、把这些所有东西,整合到一个系统里面。

关联这些所有事情间的联系,整合到一个浏览器界面里面去。写一个分布式的管理脚本不难,写一个界面也不难,但是也许是我的水平不行,这两件事结合起来让他们协同工作还是有点难度的。对我来说,写界面的工作可能更难一点。

Cloudera可能是十来个人在写Manager的东西,ambari也是放到github和apache svn上面,apache基金会的各种committer在写。easyhadoop没他们功能那么强大,一年来只有我一个人设计架构,功能,各种语言的编码,测试,发布。For the love of god, What have I done(英文部分请站在山顶仰天长啸)? T_T。从前台到后台,到hadoop和生态系统以及他们的依赖软件的单独patch、编译打包。(系统yum或者apt-get的包不如自己打的好使。)

从时间上来看,全球第一款开源的hadoop部署管理系统应该还是属于ambari,2011年8月开始写的,2012年9月底进入apache的incubator。我是大概2012年8月开始写的easyhadoop,全球第一没赶上,估计国内第一个开源的hadoop管理系统还是可以排上的。

坑爹的Apache hbase 64位机装配Snappy终于成功了怎么解决

1.安装基本tool

yum install gcc c++, autoconf, automake, libtool, Java 6, JAVA_HOME set, Maven 3,svn

yum Error: Cannot retrieve repository metadata (repomd.xml) for repository: xxxxx

sodu vim /etc/yum.repos.d/xxxxx.repo

将项[flexbox]中的enabled=1改为enabled=0

解决yum源的问题。

2.安装Snappy

下载snappy

wget

然后解压后,执行三步骤:

./configure

make

sudo make install

默认安装路径:/usr/local/lib下面

检查安装是否成功

ls /usr/local/lib/libsn*

3.安装hadoop-snappy

3.1下载hadoop-snappy源码

svn checkout hadoop-snappy

3.2.安装hadoop-snappy

cd hadoop-snappy

mvn package

4.hadooo中部署snappy

解压hadoop-snappy-0.0.1-SNAPSHOT.tar.gz文件,会生成hadoop-snappy-0.0.1-SNAPSHOT目录,拷贝这个目录下相关文件到$HADOOP_HOME/lib/native/Linux-amd64-64

cp -r /hadoop-snappy-0.0.1-SNAPSHOT/lib/native/Linux-amd64-64/* $HADOOP_HOME/lib/native/Linux-amd64-64

将target目录下的hadoop-snappy-0.0.1-SNAPSHOT.jar拷贝到$HADOOP_HOME/lib/目录下。

修改三个文件:

hadoop-env.sh,增加内容如下:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native/Linux-amd64-64/:/usr/local/lib/

修改core-site.xml文件,增加红色字体部分

property

nameio.compression.codecs/name

value

org.apache.hadoop.io.compress.GzipCodec,

org.apache.hadoop.io.compress.DefaultCodec,

org.apache.hadoop.io.compress.BZip2Codec,

com.hadoop.compression.lzo.LzoCodec,

com.hadoop.compression.lzo.LzopCodec,

org.apache.hadoop.io.compress.SnappyCodec

/value

/property

5.往HBase中使用压缩方式

当hadoop的snappy配置成功后,配置hbase就很简单了,两个步骤:

第一步骤复制相关jar包

cp -r $HADOOP_HOME/lib/native/Linux-amd64-64/* $HBASE_HOME/lib/native/Linux-amd64-64/*

这里需要注意下,有些版本在安装过程中,没有这个Linux-amd64-64这个目录,需要手工创建下。

第二步骤配置hbase-env.sh环境变量

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native/Linux-amd64-64/:/usr/local/lib/

export HBASE_LIBRARY_PATH=$HBASE_LIBRARY_PATH:$HBASE_HOME/lib/native/Linux-amd64-64/:/usr/local/lib/

6、重启Hadoop、HBase 检查安装是否成功

cd $HBASE_HOME/bin

./hbase org.apache.hadoop.hbase.util.CompressionTest /tmp/testfile snappy

结果:Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

坑爹的Apache官网提供的是32位编译的,在64位服务器上会有问题。官方竟然没有提供64位版本,要使用得自己编译。

7.编译hadoop2.2.0

7.1 yum install cmake zlib1g-dev pkg-config libssl-dev

7.2 安装protobuf-2.5.0

很多博客的protobuf的安装都是shit.不知道他们实践过没有,老是copy来copy去。

下载protobuf-2.5.0.tar.gz,解压。

sudo vim /etc/profile

#protobuf

export PROTOC_HOME=/opt/protobuf-2.5.0

export PATH=$PATH:$PROTOC_HOME/src

source /etc/profile

$protoc --version

libprotoc.2.5.0

ok就这样。根本不需要什么configure --prefix,make,make install这么麻烦,也不成功。

7.3 下载hadoop2.2.0源码

Download Hadoop sources.

Patch sources:

cd hadoop-2.2.0-src

wget

patch -p0 HADOOP-10110.patch

maven国外服务器可能连不上,maven配置一下国内镜像,在maven目录下,conf/settings.xml,在mirrors/mirros里添加,原本的不要动

mirror

idnexus-osc/id

mirrorOf*/mirrorOf

nameNexusosc/name

url;/url

/mirror

同样,在profiles/profiles内新添加

profile

idjdk-1.7/id

activation

jdk1.4/jdk

/activation

repositories

repository

idnexus/id

namelocal private nexus/name

url;/url

releases

enabledtrue/enabled

/releases

snapshots

enabledfalse/enabled

/snapshots

/repository

/repositories

pluginRepositories

pluginRepository

idnexus/id

namelocal private nexus/name

url;/url

releases

enabledtrue/enabled

/releases

snapshots

enabledfalse/enabled

/snapshots

/pluginRepository

/pluginRepositories

/profile

7.4 编译mvn package -Pdist,native -DskipTests -Dtar -rf :hadoop-common

编译完成了后,cd hadoop-2.2.0-src/hadoop-dist/target/hadoop-2.2.0

file 一下native下面的so文件

将 native/*再cp 到$hadoop_home/bin的各个data node的native/* 和native/Linux-amd64-64下。

重新运行测试,结果

rk3288 linux可以安装jdk吗

准备工作

编译 Android 对机器的配置要求较高:

64 位 CPU

16GB 物理内存+交换内存

30GB 空闲的磁盘空间用于构建,源码树另外占用大约 8GB

官方推荐 Ubuntu 12.04 操作系统,实际上也可以采用更新的操作系统版本,只需要满足 里的软硬件配置即可。

编译环境的初始化可参考 。

安装 JDK 6:

sudo add-apt-repository ppa:webupd8team/java

sudo apt-get update

sudo apt-get install oracle-java6-installer

Ubuntu 12.04 软件包安装:

sudo apt-get install git gnupg flex bison gperf build-essential \

zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \

libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \

g++-multilib mingw32 tofrodos gcc-multilib ia32-libs\

python-markdown libxml2-utils xsltproc zlib1g-dev:i386

Ubuntu 13.10/14.04 软件包安装:

sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev \

libesd0-dev libwxgtk2.8-dev squashfs-tools build-essential zip curl \

libncurses5-dev zlib1g-dev pngcrush schedtool libxml2 libxml2-utils \

xsltproc lzop libc6-dev schedtool g++-multilib lib32z1-dev lib32ncurses5-dev \

lib32readline-gplv2-dev gcc-multilib libswitch-perl

安装 ARM 交叉编译工具链和编译内核相关软件包:

sudo apt-get install gcc-arm-linux-gnueabihf \

lzop libncurses5-dev \

libssl1.0.0 libssl-dev

下载 默认版 Android SDK

注意:如果你在 2014-12-11 之前下载过源码,请重新到云盘下载并更新。

由于 SDK 比较大,请选择以下云盘之一下载 firefly-rk3288_android4.4_git_20141211.tar.gz :

百度云盘

Google Drive

下载完成后先验证一下 MD5 码:

$ md5sum /path/to/firefly-rk3288_android4.4_git_20141211.tar.gz

8fe99f519d487ff40c8bc7b5ded62887 firefly-rk3288_android4.4_git_20141211.tar.gz

确认无误后,就可以解压:

mkdir -p ~/proj/firefly-rk3288

cd ~/proj/firefly-rk3288

tar xf /path/to/firefly-rk3288_android4.4_git_20141211.tar.gz

git reset --hard

git remote add bitbucket

以后就可以直接从 bitbucket 处更新:

git pull bitbucket master:master

也可以到 在线浏览源码。

另外,linux-rockchip 社区搭建了 Git 镜像服务器,详见这里。 如果要下载源码,请用以下命令(可选其它镜像服务器):

git clone -b firefly/master git://git.us.linux-rockchip.org/rk3288_r-box_android4.4.2_sdk.git

下载 PAD 版 Android SDK

PAD版SDK是具有PAD特性的SDK,可用于调屏,TP,支持横竖屏显示等。

由于 SDK 比较大,请选择以下云盘之一下载firefly-rk3288_pad_android4.4_git_20141218.tar.gz

百度网盘

Google Drive

下载完成后先验证一下 MD5 码:

$ md5sum /path/to/firefly-rk3288_pad_android4.4_git_20141218.tar.gz

4ba44765fa649bc5cddadd8b349aa8af firefly-rk3288_pad_android4.4_git_20141218.tar.gz

确认无误后,就可以解压: mkdir -p ~/proj/firefly-rk3288_pad

cd ~/proj/firefly-rk3288_pad

tar xf /path/to/firefly-rk3288_pad_android4.4_git_20141218.tar.gz

git reset --hard

git remote add bitbucket

以后就可以直接从 bitbucket 处更新:

git pull bitbucket pad:pad

也可以到 在线浏览源码。

编译内核

编译正式版(0930)开发板的内核:

cd ~/proj/firefly-rk3288/kernel

make firefly-rk3288_defconfig

make -j8 firefly-rk3288.img

编译公测版(0809)开发板的内核:

cd ~/proj/firefly-rk3288/kernel

make firefly-rk3288_beta_defconfig

make -j8 firefly-rk3288_beta.img

编译 Android

编译 Android:

cd ~/proj/firefly-rk3288

make -j8

./mkimage.sh

烧写分区映像

上一步骤的 ./mkimage.sh 会重新打包 boot.img 和 system.img, 并将其它相关的映像文件拷贝到目录 rockdev/Image-rk3288/ 中。以下列出一般固件用到的映像文件:

boot.img :Android 的初始文件映像,负责初始化并加载 system 分区。

kernel.img :内核映像。

misc.img :misc 分区映像,负责启动模式切换和急救模式的参数传递。

recovery.img :急救模式映像。

resource.img :资源映像,内含开机图片和内核的设备树信息。

system.img :Android 的 system 分区映像,ext4 文件系统格式。

请参照 如何升级固件 一文来烧写分区映像文件。

如果使用的是 Windows 系统,将上述映像文件拷贝到 AndroidTool (Windows 下的固件升级工具)的 rockdev\Image 目录中,之后参照升级文档烧写分区映像即可,这样的好处是使用默认配置即可,不用修改文件的路径。

打包成统一固件 update.img

在 Windows 下打包统一固件 update.img 很简单,按上一步骤将文件拷贝到 AndroidTool 的 rockdev\Image 目录中,然后运行 rockdev 目录下的mkupdate.bat 批处理文件即可创建 update.img 并存放到 rockdev\Image 目录里。

update.img 方便固件的发布,供终端用户升级系统使用。一般开发时使用分区映像比较方便。

关于lzopjava源码和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-05,除非注明,否则均为首码项目网原创文章,转载请注明出处。