转载自鲲鹏论坛

今天为大家分享的是一家专业从事工业互联网关键技术,产品开发的全栈解决方案供应商,致力于工业制造直接的工业互联网应用以及工业企业大数据服务为两大核心业务,在进行鲲鹏迁移时,遇到的问题及经验分享。

首先是大数据组件CDH的编译安装。CDH是用Java编写的,默认配置是在x86的机器上运行,需要进行修改才能在鲲鹏云服务器上运行。在修改过程中遇到不少坑,在这分享一下踩坑经历,以供各位参考。

CDH是Apache Hadoop和相关项目的最完整,经过测试的流行发行版。 CDH提供了Hadoop的核心元素 - 可扩展的存储和分布式计算 - 以及基于Web的用户界面和重要的企业功能。 CDH是Apache许可的开放源码,是唯一提供统一批处理,交互式SQL和交互式搜索以及基于角色的访问控制的Hadoop解决方案。

环境信息:

类别

子项

版本

OS

CentOS

7.5

Kernel

4.14

软件

CDH-hadoop

hadoop-2.6.0-cdh5.13.3

Maven

3.5.4

Ant

1.9.4

Git

1.8.3.1

GCC

4.8.5

Cmake

3.11.2

JDK

1.8

依赖安装

yum -y install gcc-c++ autoconf   automake libtool cmake svn openssl-devel ncurses-devel

组件编译安装

下载安装包

1、安装jdk-1.8.0

参考《华为云鲲鹏云服务最佳实践-JDK-1.8.0 安装配置指南》

2、安装Maven

简介:通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。

安装软件:apache-maven-3.5.4-bin.tar.gz

wget     https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz

解压

tar -zxvf apache-maven-3.5.4-bin.tar.gz -C   /opt/ClouderaHadoopTAR/

配置mvn的环境变量

vim/etc/profileexport   M2_HOME=/opt/ClouderaHadoopTAR/apache-maven-3.5.4export PATH=$M2_HOME/bin:$PATH

source /etc/profile

测试是否安装完成

mvn -v

3、安装Findbugs

安装软件:findbugs-3.0.1.tar.gz

wget http://prdownloads.sourceforge.net/findbugs/findbugs-3.0.1.tar.gz

解压

tar -zxvf findbugs-3.0.1.tar.gz -C   /usr/local/hadoopapps/findbugs/

配置Findbugs环境变量

export   FINDBUGS_HOME=/usr/local/hadoopapps/findbugs/findbugs-3.0.1/export PATH=$PATH:$FINDBUGS_HOME/bin

使环境变量生效

source /etc/profile

测试是否安装成功

findbugs -version

4、安装ProtocolBuffer

直接用yum安装

yum install protobuf-compiler.aarch64

测试是否安装成功

protoc --version

5、安装Snappy

简介:Snappy 是一个 C++ 的用来压缩和解压缩的开发包。

安装软件:snappy-1.1.3.tar.gz

wget   https://github.com/google/snappy/releases/download/1.1.3/snappy-1.1.3.tar.gz

解压

tar -zxvf snappy-1.1.3.tar.gz

进入snappy目录

cd snappy-1.1.3/

编译安装

./configuremakemake install

测试是否安装成功,查看snappy文件库

ls -lh /usr/local/lib | grep snappy

相关依赖安装完之后,就可以开始编译CDH了。

编译要求:hadoop-2.6.0-cdh5.13.3

wget     http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.13.3.tar.gz

解压

tar -zxvf    hadoop-2.6.0-cdh5.13.3.tar.gz

进入hadoop-2.6.0-cdh5.13.3目录

cd hadoop-2.6.0-cdh5.13.3/src    #pom.xml所在同级目录

使用JDK8需要改动的地方

(1)修改Hadoop依赖的JDK版本

sed -i "s/1.7/1.8/g" `grep javaVersion -rl   /usr/local/src/hadoop-2.6.0-cdh5.13.3/pom.xml`

否则会报以下错误

[WARNING] Rule 1:   org.apache.maven.plugins.enforcer.RequireJavaVersion failed with message:Detected JDK Version: 1.8.0-131 is not in the allowed   range [1.7.0,1.7.1000}].

(2)替换依赖的jdk.tools版本

sed -i "s/1.7/1.8/g" `grep 1.7 -rl   /usr/local/src/hadoop-2.6.0-cdh5.13.3/hadoop-common-project/hadoop-annotations/pom.xml`

否则会报以下错误

[ERROR] Failed to execute goal   org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile   (default-compile) on project hadoop-annotations: Compilation failure:   Compilation failure:[ERROR]   /usr/local/src/hadoop-2.6.0-cdh5.13.3/hadoop-common-project/hadoop-annotations/src/main/java/org/apache/hadoop/classification/tools/ExcludePrivateAnnotationsJDiffDoclet.java:[20,22]   error: package com.sun.javadoc does not exist[ERROR]   /usr/local/src/hadoop-2.6.0-cdh5.13.3/hadoop-common-project/hadoop-annotations/src/main/java/org/apache/hadoop/classification/tools/ExcludePrivateAnnotationsJDiffDoclet.java:[21,22]   error: package com.sun.javadoc does not exist[ERROR]   /usr/local/src/hadoop-2.6.0-cdh5.13.3/hadoop-common-project/hadoop-annotations/src/main/java/org/apache/hadoop/classification/tools/ExcludePrivateAnnotationsJDiffDoclet.java:[22,22]   error: package com.sun.javadoc does not exist[ERROR]   /usr/local/src/hadoop-2.6.0-cdh5.13.3/hadoop-common-project/hadoop-annotations/src/main/java/org/apache/hadoop/classification/tools/ExcludePrivateAnnotationsJDiffDoclet.java:[35,16]   error: cannot find symbol[ERROR]     symbol:   class LanguageVersion[ERROR]     location: class ExcludePrivateAnnotationsJDiffDoclet

(3)替换不规范的字符

sed -i "s/<\/ul>//g" `grep   "</ul>" -l   /usr/local/src/hadoop-2.6.0-cdh5.13.3/hadoop-common-project/hadoop-annotations/src/main/java/org/apache/hadoop/classification/InterfaceStability.java`

否则会报以下错误

[ERROR] Failed to execute goal   org.apache.maven.plugins:maven-javadoc-plugin:2.8.1:jar (module-javadocs) on   project hadoop-annotations: MavenReportException: Error while creating   archive:
[ERROR] Exit code: 1 -   /usr/local/src/hadoop-2.6.0-cdh5.13.3/hadoop-common-project/hadoop-annotations/src/main/java/org/apache/hadoop/classification/InterfaceStability.java:27:   error: unexpected end tag: </ul>
[ERROR]  *   </ul>
[ERROR]    ^
[ERROR]
[ERROR] Command line was:   /usr/local/jdk1.8.0_131/jre/../bin/javadoc @options @packages
[ERROR]
[ERROR] Refer to the generated Javadoc files in   '/usr/local/src/hadoop-2.6.0-cdh5.13.3/hadoop-common-project/hadoop-annotations/target'   dir.
[ERROR]

(4)关闭DocLint特性

Java 8 新增了DocLint特性,这个特性主要是在开发阶段生产javadoc文档之前就检查Javadoc注释的错误,并且链接到源代码。如果javadoc的注释有错误,不生产javadoc。

默认情况下DocLint功能是开启的,在配置里添加-Xdoclint:none可以关闭这个功能,生成javadoc就不会做检查。

vim /usr/local/src/hadoop-2.6.0-cdh5.13.3/pom.xml

(5)在<properties></properties>之间添加如下属性

<additionalparam>-Xdoclint:none</additionalparam>

否则会报以下错误

[ERROR] Failed to execute goal   org.apache.maven.plugins:maven-javadoc-plugin:2.8.1:jar (module-javadocs) on   project hadoop-nfs: MavenReportException: Error while creating archive:[ERROR] Exit code: 1 - /usr/local/src/hadoop-2.6.0-cdh5.13.3/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/RpcCallCache.java:126:   warning: no @return[ERROR]     public String getProgram() {[ERROR]                 ^[ERROR] /usr/local/src/hadoop-2.6.0-cdh5.13.3/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/RpcCallCache.java:131:   warning: no @param for clientId

(6)修复bug

参考链接https://issues.apache.org/jira/browse/YARN-3400

替换两个文件:

./hadoop-2.6.0-cdh5.13.3/src/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-nativetask/src/main/native/src/lib/primitives.h

. /hadoop-2.6.0-cdh5.13.3/src/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/ipc/RPCUtil.java

替换文件请见附件,由于文件上传限制,需要修改文件名,分别改为primitives.h和RPCUtil.java

否则会报

[ERROR] Failed to execute goal   org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile   (default-compile) on project hadoop-yarn-common: Compilation failure:   Compilation failure:[ERROR]   /usr/local/src/hadoop-2.6.0-cdh5.13.3/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/ipc/RPCUtil.java:[101,10]   error: unreported exception Throwable; must be caught or declared to be   thrown[ERROR]   /usr/local/src/hadoop-2.6.0-cdh5.13.3/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/ipc/RPCUtil.java:[104,10]   error: unreported exception Throwable; must be caught or declared to be   thrown[ERROR]   /usr/local/src/hadoop-2.6.0-cdh5.13.3/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/ipc/RPCUtil.java:[107,10]   error: unreported exception Throwable; must be caught or declared to be   thrown

(7)安装protobuf

版本必须与Hadoop一致,否则会报错

WARNING]   [protoc, --version] failed: java.io.IOException: Cannot run program   "protoc": error=2, No such file or directory[ERROR] stdout:   []

查看Hadoop版本中指定的protobuf版本

grep   "<cdh.protobuf.version>"   /root/.m2/repository/com/cloudera/cdh/cdh-root/5.13.3/cdh-root-5.13.3.pom<cdh.protobuf.version>2.5.0</cdh.protobuf.version>

替换yum源

      wget -O   /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

执行命令进行编译

mvn package -DskipTests -Pdist,native -Dtar   -Dsnappy.lib=/usr/local/lib   -Dbundle.snappy -Dmaven.javadoc.skip=true

编译结果位于./hadoop-dist/target/

hadoop-2.6.0-cdh5.13.3.tar.gz是压缩包

hadoop-2.6.0-cdh5.13.3是文件夹

1.编译时可能会遇到javah错误

配置JAVA_HOME路径即可

2.checksum.cc文件的问题

注释掉硬件CRC32的实现,使用软件实现方式

修改/opt/hadoop-2.6.0-cdh5.13.3/src/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-nativetask/src/main/native/src/util/Checksum.cc

注释掉582行,583,584行,即可继续编译.

编译libtorrent-rasterbar.so

1.安装依赖

yum install -y boost boost-devel

2.下载源码

wget https://github.com/arvidn/libtorrent/releases/download/libtorrent-1_0_6/libtorrent-rasterbar-1.0.6.tar.gz

3.编译源码

tar -zxvf libtorrent-rasterbar-1.0.6.tar.gzcd libtorrent-rasterbar-1.0.6./configuremake -j4make install

通过swig将c/c++封装成python可调用的so动态链接库4.找到libtorrent-rasterbar.so文件

1.安装swig

 yum install -y swig

2.下载源码

 git clone https://github.com/AGWA/parentdeathutils.git

3.改写源码

     cd parentdeathutilscp diewithparent.c diewithparent.ivim diewithparent.i/***在文件头部添加如下内容***/%module diewithparent%{#define SWIG_FILE_WITH_INIT#include <sys/prctl.h>#include <signal.h>#include <unistd.h>#include <stdio.h>#include <stdlib.h>%}

4.建python模块,利用-python参数执行swig

     swig -python diewithparent.i

执行完命令后生成两个不同的文件:diewithparent_wrap.c和diewithparent.py

5.利用distutils生成动态库

先定义一个配置文件,命名为setup.py

vim setup.py

setup.py内容如下:

# -*- coding: utf-8 -*from distutils.core import setup, Extensiondiewithparent_module = Extension('_diewithparent',sources=['diewithparent_wrap.c','diewithparent.c'],)setup (name='diewithparent',version='1.0',author="SWIG Docs",description="""Simple swig diewithparent from docs""",ext_modules = [diewithparent_module],py_modules = ["diewithparent"],)

6.生成_diewithparent.so动态库

python setup.py build_ext --inplace

作者:南七技校林书豪

【鲲鹏来了】鲲鹏迁移过程案例分享相关推荐

  1. AntDB 落地某省电信大数据中心项目的性能优化案例分享

    亚信科技AntDB 落地某省电信大数据中心项目的性能优化案例分享 某省电信大数据中心项目采购了一套亚信科技AntDB 3.1分布式数据库,2018年8月初开始建设,建设周期一个月.9月份投入运行后,至 ...

  2. 近期活动盘点:AI Time:论道AI安全与伦理、大数据、AI在中国金融保险业的应用案例分享讲座...

    想知道近期有什么最新活动?大数点为你整理的近期活动信息在此: AI Time"science debate 论道AI安全与伦理 2019年5月31日 如今,人工智能的社会角色不断更新迭代,越 ...

  3. linux下批量修改文件名精彩解答案例分享

    ######################################################### #linux下批量修改文件名精彩解答案例分享 #date:21:34 2011-11 ...

  4. 关闭 定时开启_【话说定时器系列】之四:STM32定时器更新事件及案例分享

    STM32定时器是 ST MCU 内部最基础且常用的外设,实际应用尤为普遍.去年,电堂推出了<STM32 TIMER基础及常规应用介绍>,为大家梳理了 STM32 TIMER 的庞大内容, ...

  5. 企业大数据运用实战案例分享

    一.企业大数据如何起步:从小数据到大数据 目前国内外关于大数据的谈论很多,大多是谈运营级别的,或者说从服务端.服务方提得较多一些.笔者要跟大家交流的问题是作为各类企业尤其是客户方的企业来说,大数据跟他 ...

  6. 老李案例分享:Weblogic性能优化案例

    老李案例分享:Weblogic性能优化案例 POPTEST的测试技术交流qq群:450192312 网站应用首页大小在130K左右,在之前的测试过程中,其百用户并发的平均响应能力在6.5秒,性能优化后 ...

  7. 2020-12-14 Matlab 模糊控制 车辆泊车 案例分享

    Matlab 模糊控制 车辆泊车 案例分享 最近看到了一个知网的文献,研究基于模糊控制的自动泊车,复现了论文, 模糊控制方法参看之前的文章: matlab模糊控制工具箱使用和模糊控制pid实例参考(一 ...

  8. 计算机网络第4版潘爱民_学术活动 钱江会计实务精英讲坛预告(第84期)| 何继昌 : 战略视角下之财务分析应用实践 兼选股案例分享...

    钱江会计实务精英讲坛预告第84期 # 主题 战略视角下之财务分析应用实践 --兼选股案例分享 # 时间 2020年12月25日 2:00 pm---4:00 pm # 地点 C楼213 主讲人简介 何 ...

  9. 某大型数据中心离心式冷水机组 控制板UPS电源改造项目案例分享

    摘  要  离心式冷水机组作为大部分数据中心的核心设备,其是否稳定.安全运行决定着数据中心制冷系统的安全运行.本文分析了某大型数据中心离心式冷水机组控制板UPS电源改造创新案例,分析了改造项目过程中可 ...

最新文章

  1. WEB前端技术趋势图示-JS库
  2. centos7搭建时间服务器
  3. retrofit 上传、下载文件
  4. [Usaco2007 Demo][BZOJ1628] City skyline
  5. C++一天一个程序(八)
  6. 关于div中图片水平垂直居中的问题
  7. r语言岭回归参数选择_78-预测分析-R语言实现-岭回归与LASSO回归
  8. Ubuntu18.04忘记密码解决
  9. 关于Qt学习之路2:8、添加动作 这一节课 发现里面的程序运行后没有图标
  10. 白话阿里巴巴Java开发手册高级篇
  11. 使用switchhost进行host文件管理
  12. Ember.js 初学指南
  13. 这位印度小哥,拯救了山河日下的微软帝国
  14. 如何用计算机将图片整成手绘画,【新手教程】如何将手绘作品转变成电子档,并让其更像“作品”?...
  15. 手机端上传照片实现 压缩、拖放、缩放、裁剪、合成拼图等功能
  16. 在Linux下测试SD卡的读写速度
  17. 打包安卓apk后的V1和V2签名
  18. 计算机三级微机原理,计算机三级哪个考 微机原理与应用
  19. namp安装及官方使用手册翻译及注释1
  20. 使用Python计算水流量装置的流量稳定性

热门文章

  1. 视觉SLAM笔记(56) 位姿图优化
  2. python批量导入网页信息_python批量导入数据进Elasticsearch的实例
  3. 3,外键之表关联关系,修改表,复制表
  4. 51单片机学习笔记(郭天祥版)(3)——引脚讲解、数码管静态显示、中断系统(外部中断,定时器中断)...
  5. js添加事件、移除事件、阻止冒泡、阻止浏览器默认行为等写法(兼容IE/FF/CHROME) 转载...
  6. SQLSERVER2005 收缩日志
  7. 使用PagedDataSource给Repeater、DataList增加分页
  8. 拼多多算法笔试2020
  9. linux 线程 waitforsingleobject,WaitForSingleObject、WaitForMulitpleObjects和SignalObjectAndWait线程同步...
  10. 获取周一_周一个股精选:光伏概念、央企改革:太阳能(000591)