Windows 编译 源码编译安装-如果你还没有编译Hadoop源代码,你就出局了。

序言

Hadoop源代码编译在大数据中的地位是什么?简单来说,就像Javaer一定懂得面向对象思维一样(ps:如果你没有上千个对象,可以说可以Java~~~)。

或者也许你是

从事大数据Hadoop,如果你不知道为什么DogCuting好,你好心说你精通Hadoop。

这个时候,你的这些高手们会跟你这样的年轻人说,Hadoop源码还没编译好,学习大数据的路还很长!!

为什么要编译Hadoop

源代码(编译版本是Hadoop-2.5.0-CDH5.3.6)。

首先,Hadoop本身是用Java语言开发的,还有一些不适合Java的要求和操作,所以原生库(NativeLibraries)的概念是通过本地库引入的,Hadoop可以做一些越来越高效的操作。

其次,Hadoop 中的本机文件

官网提供的 2.x 版本是 32 位编译的,在实际使用环境中基本是 64 位,所以为了越来越高效地运行 Hadoop,最好在本地编译 Hadoop 源代码,将官方安装包中包含的本地库替换为编译好的本地库文件之后,如果你启动HDFS

Windows 编译 源码编译安装,使用HDFS,并运行MapReduce任务,将出现以下警告消息:

WARNutil.NativeCodeLoader:Unabletoloadnative-hadooplibraryforyourplatform...使用内置的Java类在适用的情况下。

请原谅处女座的剧情,我眼里没有石头的空间

后面我们来谈谈笔记本的软硬件配置:

你到底是如何编译的?无论是 Apache 版本的 Hadoop 还是 cdh 版本的 Hadoop,都是按照 Hadoop 源代码解压根目录中的 BUILDING.txt 文件进行无脑输出,这里我用 cdh 版本解释,如右图所示:

建筑。TXT的具体核心内容如下:

以下是根据前面提供的要求,这里解释一下其中标明的版本,一定要按照指定的版本,否则你不知道怎么死

1. JDK环境建设(1.7.0_67)。

2. Maven环境建设(3.3.9)。

3. 查找虫子环境构建(1.3.9)。

JDK、maven、findbugs 安装的思路都是通过压缩包安装的,总体思路总结如下:

4. 普罗托布夫环境建设(2.5.0).

注意:

前提是内网畅通

#pingbaidu.com

5. 安装依赖关系

按照上面的建筑.TXT可以看出,如果你编译HADOOPNATIVE库,它是必需的

*CMake2.6ornewer(ifcompilingnativecode)

*Zlibdevel(ifcompilingnativecode)

*openssldevel(ifcompilingnativehadoop-pipes)

#yum-yinstallcmakezlib-developenssl-devel好了,

用了老眼睛的力量才彻底完成了Hadoop源码编译的规划工作Windows 编译 源码编译安装,接下来就要开始编译了,有兴趣的请大家加入群: 131322610交流学习

6. 编译 Hadoop 源代码

继续构建.txt发现以下内容:

建筑分布:

Createbinarydistributionwithnativecode:

$mvnpackage-Pdist,native-DskipTests-Dtar

上传 hadoopcdh 源代码并将其解压缩到目录中

注意:

mvn 编译包还需要在内网下载用于编译的依赖 jar

编译结果如下:

编译结果:

生成的本机库目录: ${HADOOP_SRC_HOME}/hadoop-dist/target/

有一个打包的软件包(hadoop-2.5.0-cdh5.3.6

.tar.gz)和解压缩包(Hadoop-2.5.0-CDH5.3.6)。

测试验证:

将本地编译的本机库替换为安装包附带的本机库(${HADOOP_HOME}/lib/native)。

#sbin/启动 dfs.sh

服务启动时,之前没有警告消息提示,表示源码编译成功,没有任何问题。

通过特殊命令进行测量

再次重新执行重新编译的本地库操作,然后重新测试:

至此,Hadoop源码的编译已经完美结束,没有多少男性同伴能够轻松解决编译过程中的问题

让我们总结一下我在编译Hadoop时遇到的问题,供大家参考:

编译常见错误列表:

最近,公司给我们分配了 2 台虚拟机服务器进行强化学习训练,在虚拟环境中安装 TensorFlow 环境后,我们在导入 tensorFlow 时注意到以下错误:

于是我去谷歌搜索了这个错误的原因,发现是因为我们服务器的CPU不支持AVX指令集造成的,并且

用 pip 安装的 TensorFlow 需要依赖 AVX 指令集,为了确认我们的 CPU 是否真的不支持 AVX 指令集,我用 cat /proc/cpuinfo 命令检查了一下当前的 CPU 指令集支持情况,发现我们的 CPU 不支持 AVX 指令集。

查询互联网后,我们可以使用TensorFlow的源代码

编译和构建 TensorFlow 的一个版本,以便我们可以在不支持 AVX 指令集的机器上使用 TensorFlow。所以我尝试按照官网给出的步骤从源代码编译和构建 TensorFlow。

在构建 TensorFlow 之前,我们需要做两件事:如果下载 TensorFlow 源代码

时网速较好,可以直接使用以下命令从 GitHub 仓库克隆 TensorFlow 代码仓库的源代码:

git clone https://github.com/tensorflow/tensorflow.gitcd tensorflow

如果速度不可预测,可以直接下载zip版本,然后上传到服务器,我用前者。

注意:此处的代码库默认为主开发分支。

下载并安装 Bazel

创建工具 这里我想说的很多,一般来说,Bazel有两种安装方式,一种是使用Bazelisk安装,另一种是自动安装,我用的是前者。官方网站会告诉你,你可以在 GitHub 中安装任何可以在 _TF_MIN_BAZEL_VERSION 到 _TF_MAX_BAZEL_VERSION 之间在 tensorflow/configure 中指定的版本.py但是,有一个坑。因为这里他说你可以安装任何版本的3.10~3.99,所以我装了一个3.70版本,等真的编译好了,他会告诉你这个版本不匹配,你需要安装3.10版本,所以只能卸载再重装。

接下来我们需要根据 bazel 安装一些依赖项:

apt install curl gnupgcurl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor > bazel.gpgmv bazel.gpg /etc/apt/trusted.gpg.d/echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list

接下来源码编译安装前的环境准备,我们可以使用 apt update &&sudo apt install bazel-3.1.0 命令直接安装它。

到目前为止,我们已经安装了 bazel 编译工具并下载了 TensorFlow 的源代码,因此我们需要开始编译和构建 TensorFlow。

在此之前,我们需要使用以下命令安装一些相应的依赖项:

pip install  six numpy wheel setuptools mock 'future>=0.17.1'pip install  keras_applications --no-depspip install  keras_preprocessing --no-deps

然后我们使用 gcc --version 来检查我们的 gcc 版本,我的是 7.5.0,附带 18.04,可用。

Windows 编译 源码编译安装-如果你还没有编译Hadoop源代码,你就出局了。

然后是真正的编译过程。首先,我们进入从GitHub下载的TensorFlow源代码并执行它

./configure

这将要求您执行一些与配置相关的信息:

Please specify the location of python. [Default is /root/miniconda3/envs/ray/bin/python3]:

这句话是让你输入Python的位置,如果正确的话直接输入

,如果要更改,请输入 Python 所在的目录;

Found possible Python library paths:/root/miniconda3/envs/ray/lib/python3.8/site-packagesPlease input the desired Python library path to use.  Default is [/root/miniconda3/envs/ray/lib/python3.8/site-packages]

此步骤允许您输入 Python 库的位置,和以前一样,我将在此处输入。

Do you wish to build TensorFlow with ROCm support? [y/N]: N

这一步是问你是否要构建一个支持 ROCm 的 TensorFlow 版本,这里我选择 N。

Do you wish to build TensorFlow with CUDA support? [y/N]: N

Windows 编译 源码编译安装-如果你还没有编译Hadoop源代码,你就出局了。

这一步是询问你是否要构建一个支持 CUDA 的 TensorFlow 版本,因为我打算将其用于分布式集群的 CPU 版本,而 CUDA 在此服务器中未使用,所以我选择了 N。

Do you wish to download a fresh release of clang? (Experimental) [y/N]: N

这一步是问你要不要嚣张叮当是发布版,这里一开始我选了Y,因为我网速不好,下载错了,后来我选择了N;

lease specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native -Wno-sign-compare]:

这一步是让你输入一个编译时优化器,这里我直接用默认,直接输入就行了;

Would you like to interactively configure ./WORKSPACE for Android builds? [y/N]:  N这一步是问你是不是需要支持Android,我这边不需要,所以直接N,否则的话会让你选择你Android SDK的版本之类的;

配置

完所有这些后,将弹出有关您的配置的消息。

现在是时候真正开始编译你的 TensorFlow 源代码了源码编译安装前的环境准备,由于我使用的是没有 CUDA 的版本,所以我只使用以下命令:

bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package

编译后,你会听到以下消息:(由于我没有自己作品的截图,所以我使用了网络图,我花了 7500 多秒才使用我的旧 CPU)。

Windows 编译 源码编译安装-如果你还没有编译Hadoop源代码,你就出局了。

编译完成后,我们可以在 TensorFlow 源代码目录中输入以下命令来构建最终的 pip 安装包:

./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

在这里,/tmp/tensorflow_pkg

是我定义最终安装包输出的地方,当它结束时,我们可以 cd 到 /tmp/tensorflow_pkg 目录中,看看上面有什么:

如您所见,我们最终的 pip 安装版本已经完成,然后我们可以在命令行中输入以下命令进行安装:

pip install tensorflow-2.5.0-cp38-cp38-linux_x86_64.whl

安装完成后,我们可以尝试在 Python 交互环境中导出 TensorFlow,看看是否有错误:

Windows 编译 源码编译安装-如果你还没有编译Hadoop源代码,你就出局了。

我们发现它可以正常导出和使用,至此,整个 TensorFlow 源代码的编译、构建和安装环境就完成了。

书籍推荐

TensorFlow 高级手册:基础知识、算法和应用

黄洪波编辑

本书由人工智能一线专家根据日常工作感受和体会总结,穿插自身实践体会和教训,对TensorFlow基础知识、环境构建、神经网络、常用技术进行详细讲解。帮助读者轻松理解GANCNRNN等各种神经网络,真正完成AI从感知到产品的全过程。

(扫描代码了解本书的详细信息)。

如果你喜欢这篇文章

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 源码编译 Windows 编译 源码编译安装-如果你还没有编译Hadoop源代码,你就出局了。 https://www.wkzy.net/game/132769.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务