diff --git a/Docs/README.md b/Docs/README.md new file mode 100644 index 0000000000000000000000000000000000000000..b8ed6a501248d71f65405946a14103e62340355b --- /dev/null +++ b/Docs/README.md @@ -0,0 +1,25 @@ +# Bigdata SIG Docs + +此处存放Bigdata相关资料供开发者、用户参考 + +## 目录说明 +- **1-移植指南**:存放开发者关注的文档,如hadoop aarch64移植步骤及问题等 + - [hadoop移植指南](移植指南/hadoop.md) + - [hive移植指南](移植指南/hive.md) + - [hbase移植指南](移植指南/hbase.md) + - [spark移植指南](移植指南/spark.md) + - [flink移植指南](移植指南/flink.md) + - [zookeeper移植指南](移植指南/zookeeper.md) +- **2-部署指南**:存放bigdata组件部署指南,如hadoop部署指南等类 + - [hadoop部署指南](部署指南/hadoop.md) + - [hive部署指南](部署指南/hive.md) + - [hbase部署指南](部署指南/hbase.md) + - [spark部署指南](部署指南/spark.md) + - [flink部署指南](部署指南/flink.md) + - [zookeeper部署指南](部署指南/zookeeper.md) +- **3-工具包**:存放checkSo工具,及使用方法 + - [checkSo工具使用指南](工具包/checkSo工具使用指南/checkSo.md) +- **4-其他**:不属于上述三类的文档 + +## 说明 +开发者在提交文档之后,请更新此文件,刷新相关目录章节 diff --git "a/Docs/\345\205\266\344\273\226/.keep" "b/Docs/\345\205\266\344\273\226/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/Docs/\345\267\245\345\205\267\345\214\205/.keep" "b/Docs/\345\267\245\345\205\267\345\214\205/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/Docs/\345\267\245\345\205\267\345\214\205/README.md" "b/Docs/\345\267\245\345\205\267\345\214\205/README.md" new file mode 100644 index 0000000000000000000000000000000000000000..205e95bacaae74e772c98dd0861b1094b439e2a7 --- /dev/null +++ "b/Docs/\345\267\245\345\205\267\345\214\205/README.md" @@ -0,0 +1,10 @@ +# Bigdata SIG 工具 + +此处存放Bigdata相关资料供开发者、用户参考 + +## 目录说明 +- **1-工具包**:存放checkSo工具,及使用方法 + - [checkSo工具使用指南](checkSo工具使用指南/checkSo.md) + +## 说明 +开发者在提交文档之后,请更新此文件,刷新相关目录章节 diff --git "a/Docs/\345\267\245\345\205\267\345\214\205/checkSo\345\267\245\345\205\267\344\275\277\347\224\250\346\214\207\345\215\227/.keep" "b/Docs/\345\267\245\345\205\267\345\214\205/checkSo\345\267\245\345\205\267\344\275\277\347\224\250\346\214\207\345\215\227/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/Docs/\345\267\245\345\205\267\345\214\205/checkSo\345\267\245\345\205\267\344\275\277\347\224\250\346\214\207\345\215\227/checkSo.md" "b/Docs/\345\267\245\345\205\267\345\214\205/checkSo\345\267\245\345\205\267\344\275\277\347\224\250\346\214\207\345\215\227/checkSo.md" new file mode 100644 index 0000000000000000000000000000000000000000..80f2a7efdb1ce492099123ebe6a5f8fba04e3922 --- /dev/null +++ "b/Docs/\345\267\245\345\205\267\345\214\205/checkSo\345\267\245\345\205\267\344\275\277\347\224\250\346\214\207\345\215\227/checkSo.md" @@ -0,0 +1,6 @@ +### checkSo工具使用指南 +#### checkSo工具下载地址 +https://mirrors.huaweicloud.com/kunpeng/archive/kunpeng_solution/bigdata/Tools/checkSo.zip +#### checkSo工具指南 +参考以下链接 +https://bbs.huaweicloud.com/forum/thread-22679-1-1.html diff --git "a/Docs/\347\247\273\346\244\215\346\214\207\345\215\227/ flink.md" "b/Docs/\347\247\273\346\244\215\346\214\207\345\215\227/ flink.md" new file mode 100644 index 0000000000000000000000000000000000000000..9e098776140b8f31af3534857da3c9ca8e9a8366 --- /dev/null +++ "b/Docs/\347\247\273\346\244\215\346\214\207\345\215\227/ flink.md" @@ -0,0 +1,462 @@ +### flink-1.13.0移植指南 +编写日期:2023年03月10日 +### 1 简介 + Flink是一个分布式、高性能、高可用的开源大数据处理框架,具有基于内存计算,流式处理等特点,用于对无边界和有边界数据流进行有状态的计算。 +### 2 环境要求 +#### 2.1 硬件要求 +| 项目 | 说明 | +| ---------------- |---------------- | +|服务器|对服务器无要求| +|CPU|aarch64架构| +|磁盘分区|对磁盘分区无要求| +|网络|可访问外网| +#### 2.2 软件要求 +| 项目 | 说明 | +| ---------------- |---------------- | +|版本|openeuler 22.03| +|OS|5.10.0-60.65.0.90.oe2203.aarch64| +|GCC|10.3.1| +|OpenJDK|1.8.0_342| +|Maven|3.6.3| +|Flink|1.13.0| +### 3 安装基础库 +#### 3.1 安装gcc maven jdk-1.8.0 +yum -y install gcc.aarch64 gcc-c++.aarch64 gcc-gfortran.aarch64 libgcc.aarch64 maven java-1.8.0-openjdk.aarch64 java-1.8.0-openjdk-devel.aarch64 +#### 3.2 安装依赖 +yum -y install gcc gcc-c++ gcc-gfortran.aarch64 libgcc.aarch64 make cmake libtool autoconf automake ant wget git vim clang openssl openssl-devel golang +#### 3.3 配置maven +修改Maven配置文件中的:本地仓路径、远程仓等。 +配置文件路径:“/etc/maven/settings.xml” +说明: +``` + +/path/to/local/repo + + + + huaweimaven + huawei maven + https://repo.huaweicloud.com/repository/maven/ + central + +``` +### 4 移植指南分析 +#### 4.1 软件移植分析结果 +|原始jar包|so文件| +| ---------------- |---------------- | +|scala-compiler-2.11.12.jar | libjansi.so +|flink-shaded-netty-4.1.49.Final-13.0.jar | liborg_apache_flink_shaded_netty4_netty_transport_native_epoll_x86_64.so| +|frocksdbjni-5.17.2-artisans-2.0.jar | librocksdbjni32.so, librocksdbjni64.so, librocksdbjnile.so| +|flink-shaded-netty-tcnative-dynamic-2.0.30.Final-13.0.jar | liborg_apache_flink_shaded_netty4_netty_tcnative_linux_x86_64.so, liborg_apache_flink_shaded_netty4_netty_tcnative_linux_x86_64_fedora.so| +|conscrypt-openjdk-uber-1.3.0.jar | libconscrypt_openjdk_jni-linux-x86_64.so +|beam-vendor-grpc-1_26_0-0.3.jar | liborg_apache_beam_vendor_grpc_v1p26p0_netty_tcnative_linux_x86_64.so| +### 5 依赖库编译 +#### 5.1 scala-compiler-2.11.12.jar +scala-compiler-2.11.12.jar aarch64下载地址:https://mirrors.huaweicloud.com/kunpeng/maven/org/scala-lang/scala-compiler/2.11.12/scala-compiler-2.11.12.jar +#### 5.2 frocksdbjni-5.17.2-artisans-2.0.jar +frocksdbjni-5.17.2-artisans-2.0.jar aarch64下载地址:https://mirrors.huaweicloud.com/kunpeng/maven/com/data-artisans/frocksdbjni/5.17.2-artisans-2.0/frocksdbjni-5.17.2-artisans-2.0.jar +#### 5.3 beam-vendor-grpc-1_26_0-0.3.jar +##### 5.3.1 安装gradle-5.4.1 +``` +wget https://services.gradle.org/distributions/gradle-5.4.1-bin.zip --no-check-certificate +unzip gradle-5.4.1-bin.zip +export PATH=`pwd`/gradle-5.4.1/bin:$PATH +``` +##### 5.3.2 移植beam-vendor-grpc +``` +wget https://github.com/apache/beam/archive/v2.19.0.tar.gz -O beam-v2.19.0.tar.gz +tar -zxf beam-v2.19.0.tar.gz +``` +##### 5.3.3 进入beam目录 +``` +cd beam-2.19.0/vendor/grpc-1_26_0/ +vim build.gradle +version = "0.3" + +repositories { + maven { url "https://mirrors.huaweicloud.com/kunpeng/maven/" } + mavenLocal() + maven { url "https://mirrors.huaweicloud.com/repository/maven/"} +} +``` +##### 5.3.3执行编译 +``` +gradle build +编译好的beam-vendor-grpc-1_26_0-0.3.jar在build/libs目录下 +请将编译完成的jar包替换到/.../org/apache/beam/beam-vendor-grpc-1_26_0/0.3/自己搭建的Maven仓库中。 +``` +#### 5.4 conscrypt-openjdk-uber-1.3.0.jar +##### 5.4.1 准备conscrypt编译环境 +``` +步骤1 安装cmake,需要(3.0及以上),可使用yum安装,cmake –version查看版本。 +步骤2 安装ninja。 +1.下载ninja,并解压。 +wget https://github.com/ninja-build/ninja/archive/v1.10.0.zip +unzip v1.10.0.zip +2.定位到目录ninja-1.10.0。 +cd ninja-1.10.0 +3.编译ninja。 +./configure.py --bootstrap +4.将里面的ninja 文件复制到/usr/bin目录下。 +cp ninja /usr/bin +步骤3 配置go环境 +1.下载,并解压。 +cd /usr/local/ +wget https://golang.org/dl/go1.16.6.linux-arm64.tar.gz +tar –xf go1.16.6.linux-arm64.tar.gz +2.配置环境变量,并生效。 +export GOROOT=/usr/local/go +export PATH=$PATH:$GOROOT/bin +source /etc/profile +步骤4 构建boringssl环境 +1.下载boringssl源码,并解压。 +wget https://github.com/google/boringssl/archive/master.zip +unzip master.zip +mv boringssl-master boringssl +2.配置环境变量。 +vim /etc/profile +export BORINGSSL_HOME=/home/boringssl +source /etc/profile +3.进入boringssl 目录。 +cd boringssl +构建64位版本和32位版本。因为系统架构为aarch64,可以不构建32位版本。 +64位版本: +mkdir build64 +cd build64 +cmake -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_ASM_FLAGS=-Wa,--noexecstack \ + -GNinja .. +ninja +注: + 1. 找不到libwind,yum安装libunwind-dev。 + 2. yum golang下载失败,可手动安装go,并配置环境变量。 + 3. ninja时,go:golang get 报x509:certificate错误,可以配置。 +export GOPROXY=http://mirrors.tools.huawei.com/goproxy/ +export GO111MODULE=on +32 位版本: +mkdir build32 +cd build32 +cmake -DCMAKE_TOOLCHAIN_FILE=../util/32-bit-toolchain.cmake \ + -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_ASM_FLAGS="-Wa,--noexecstack -m32 -msse2" \ + -GNinja .. +ninja +``` +##### 5.4.2编译gradle源码 +``` +1.定位到/home 目录。 +cd /home +2.查看conscrypt编译对应的gradle版本。 +进入conscrypt目录。 +vim /home/conscript/gradle/wrapper/gradle-wrapper.properties +3.下载gradle-v4.8.1源码 。 +wget https://github.com/gradle/gradle/archive/v4.8.1.zip +解压v4.8.1.zip。 +unzip v4.8.1.zip +重命名为gradle,并定位到gradle目录。 +mv gradle-4.8.1 gradle && cd gradle +4.编辑NativePlatforms.java +vim subprojects/platform-native/src/main/java/org/gradle/nativeplatform/platform/internal/NativePlatforms.java +在44行后面增加一行代码。 +ArchitectureInternal aarch64 = Architectures.forInput("aarch64"); +在73行后面增加一行代码。 + platforms.add(createPlatform(linux, aarch64)); +5.gradle构建。 +./gradlew +运行完成后/home/gradle/subprojects/platform-native/build/libs 下会生成gradle-platform-native-4.8.1.jar。 +注:1. 这里UnknownHostException问题,请看问题1 gradle代理配置解决。 + 2. 出现Reason: invalid distance too far back错误,删除/root/.gradle/wrapper/下目录,重新运行./gradlew即可 +6.定位到conscrypt目录。 +cd /home/conscript +运行构建命令。 +./gradlew +会自动下载gradle-4.8.1-all,gradle的默认的缓存目录:/root/.gradle/wrapper/dists。 +7.定位到下载的gradle 中删除gradle-platform-native-4.8.1.jar +cd /root/.gradle/wrapper/dists/gradle-4.8.1-all/6fmj4nezasjg1b7kkmy10xgo2/gradle- +4.8.1/lib/plugins ; +rm -rf gradle-platform-native-4.8.1.jar; +将步骤3生成的jar包替换 +cp /home/gradle-4.8.1/subprojects/platform-native/build/libs/gradle-platform-native-4.8.1.jar ./ +8.重启电脑 +Reboot +``` +##### 5.4.4编译conscrypt +``` +1.下载conscrypt源码 +定位到/home目录。 +cd /home +下载源码,并解压 +wget https://github.com/google/conscrypt/archive/1.3.0.zip --no-check-certificate +unzip 1.3.0.zip +mv conscrypt-1.3.0 conscrypt && cd /conscript +2.编译conscrypt。 +步骤 1 定位到openjdk目录 +cd openjdk +步骤 2 修改build.gradle文件 +vim build.gradle +1.10行增加arm64 = 'aarch64' +2.修改19行nativeClassifier64Bit = classifierFor(osName, arm64) +3.在第280行增加platform配置。 + linux_aarch64 { + architecture "aarch64" + operatingSystem "linux" + } +4.将构建jni-library 时64位架构改为“linux_aarch64”。 +注释第293行,修改第294行arch64Name为"linux_aarch64" +修改315行修改为aarch64。 +5.Clang 或gcc编译时args增加指定头文件地址。(10.3.0为gcc版本,根据自己gcc版本配置) +"-I$jniSourceDir/main/include", +"-I$jniSourceDir/unbundled/include", +"-I/usr/include/c++/10.3.0", +"-I/usr/include/c++/10.3.0/aarch64-redhat-linux ", +修改生成库信息代码。 +def archName = binary.targetPlatform.architecture.name +def archNameR = archName +if(archName == 'aarch64'){ + archNameR = 'aarch_64' +} +archName = archName.replaceAll('-','_') +def classifier = classifierFor(osName, archName) +def classifierR = classifierFor(osName,archNameR) +def sourceSetName = sourceSetName("$classifier") +def source = binary.sharedLibraryFile +修改第419行和第421行内容为classifierR +完成后单击“Ecs”,输入:wq保存退出。 +6.返回上一级目录。修改“conscrypt”根目录下的build.gradle文件 +vi build.gradle +修改改第39行,并增加40行-43行,构建aarch通道。 + gcc(Gcc){ + target("linux_aarch64") { + cppCompiler.executable = "/usr/bin/gcc" + } + } +在第172-174行增加代码。 +dependencies { +errorprone("com.google.errorprone:error_prone_core:2.3.3") +} +完成后单击“Ecs”,输入:wq保存退出。 +7.定位到conscrypt目录。 +cd /home/conscrypt +8.构建。 +./gradlew clean build --stacktrace -x :conscrypt-openjdk:linux_aarch64Test -Dorg.conscrypt.openjdk.buildUberJar=true +注:1.如找不到linux_aarch64Test,则使用./gradlew clean build,跳过测试。 + 2.构建找不到conscrypt_openjdk_jni-linux-aarch_64,可在根目录,find一下,将找到的so文件按照要求放入对应目录下,比如/usr/lib。 + 3.Tset构建失败,注释build.gradle下Test类。 +9.定位到openjdk-uber/buil/libs目录。 +cd /openjdk-uber/build/libs +cp /home/conscrypt-1.3.0/openjdk/build/linux_aarch_64/native-resources/META-INF/native/libconscrypt_openjdk_jni-linux-aarch_64.so +10.解压conscrypt-openjdk-uber-1.3.0.jar。 +jar xvf conscrypt-openjdk-uber-1.3.0.jar +11.将/home/conscrypt/openjdk/build/linux_aarch_64/native-resources/META-INF/native\ 目录下的libconscrypt_openjdk_jni-linux-aarch_64.so 放入conscrypt-open-uber-1.3.0.jar 中的META-INF/native 下。 +cp /home/conscrypt/openjdk/build/linux_aarch_64/native-resources/META-INF/native\ /libconscrypt_openjdk_jni-linux-aarch_64.so META-INF/native +12.jar打包,移植结束。 +jar cvf conscrypt-openjdk-uber-1.3.0.jar META-INF/ org +将编译好的jar包放入/root/.gradle/caches/modules-2/files-2.1/org.conscrypt/conscrypt-openjdk-uber +``` +#### 5.5 flink-shaded-netty +##### 5.5.1 编译安装apr-1.6.5 +``` +1.下载apr-1.6.5源码。 +wget https://archive.apache.org/dist/apr/apr-1.6.5.tar.gz +2.解压后编译安装。 +tar -zxvf apr-1.6.5.tar.gz +cd apr-1.6.5 +./configure +make +make install +注:如./configure 报错:apr-1.7.0 rm: cannot remove 'libtoolT': No such file or directory +则vim configure +30392 ,修改RM='$RM'修改为RM='$RM -f' +30390 PACKAGE='$PACKAGE' +30391 VERSION='$VERSION' +30392 RM='$RM -rf' +30393 ofile='$ofile' + +``` +##### 5.5.2 编译安装netty-tcnative-parent-2.0.30.Final +``` +1.下载netty-tcnative-parent-2.0.30.Final源码。 +wget https://codeload.github.com/netty/netty-tcnative/tar.gz/netty-tcnative-parent-2.0.30.Final +mv netty-tcnative-parent-2.0.30.Final netty-tcnative-parent-2.0.30.Final.tar.gz +2.解压源码包。 +tar -zxvf netty-tcnative-parent-2.0.30.Final.tar.gz +3.进入解压后目录。 +cd netty-tcnative-netty-tcnative-parent-2.0.30.Final +4.修改pom.xml,屏蔽boringssl-static的编译。 +vim pom.xml +603 +601 openssl-dynamic +602 openssl-static +603 +604 +5.编译打包到maven本地仓库。 +mvn install +``` +##### 5.5.3 编译安装netty-all-4.1.49.Final +``` +1.下载netty-4.1.49.Final源码。 +wget https://github.com/netty/netty/archive/netty-4.1.49.Final.tar.gz +2.解压源码包。 +tar -zxvf netty-4.1.49.Final.tar.gz +3.进入netty解压目录。 +cd netty-netty-4.1.49.Final +4.编译打成jar包,netty-all-4.1.49Final.jar放置于“all/target”目录。 +mvn install -DskipTests +``` +##### 5.5.4 flink-shaded-netty-4.1.49.Final-13.0编译 +``` +1.下载flink-shaded-release-13.0安装包。 +wget https://codeload.github.com/apache/flink-shaded/tar.gz/release-13.0 +2.解压安装包。 +mv release-13.0 flink-shaded-release-13.0.tar.gz +tar -zxvf flink-shaded-release-13.0.tar.gz +3.进入解压后的目录。 +cd flink-shaded-release-13.0 +4.修改pom.xml +因为只需单独编译打包flink-shaded-netty-4,注释掉其余不需要的module。 +vim pom.xml +58 + 58 + 59 + 60 + 61 + 62 flink-shaded-netty-4 + 63 + 64 + 65 + 66 +5.编译打成jar包。 +mvn install package –DskipTests +flink-shaded-netty-4.1.49.Final-13.0.jar放置于“flink-shaded-netty-4/target/”目录。 +将编译好的jar包替换本地仓库中 +``` +##### 5.5.5 flink-shaded-netty-tcnative-dynamic-2.0.30.Final-13.0.jar +``` +1.进入flink shaded-release-13.0 +cd flink-shaded-release-13.0 +2.修改“flink-shaded-release-13.0/pom.xml”。因为只需单独编译打包flink-shaded-netty-tcnative-dynamic,注释掉其余不需要的module。 +vim pom.xml + + + + + + flink-shaded-netty-tcnative-dynamic + + + +3.修改“flink-shaded-release-13.0/flink-shaded-netty-tcnative-dynamic/pom.xml”。 +vim flink-shaded-netty-tcnative-dynamic/pom.xml 在第94行下方插入如下代码。 + + io.netty + netty-tcnative + ${netty.tcnative.version} + linux-aarch_64 + jar + false +${project.build.directory}/native_libs + + +添加完成之后,在第156行下方插入如下代码。 + + + + + + + + + + + + + + + + + + + +注释掉第175-第198行。 + +4.编译打包到maven本地仓库。 +mvn install +编译好的jar包在flink-shaded-netty-tcnative-dynamic/target目录下,并将编译完成的jar包替换到本地仓库中。 +``` +### 6 Flink-1.3.0编译 +#### 6.1 从github上下载flink-release-1.13.1源码并解压: +``` +wget https://github.com/apache/flink/archive/release-1.3.0.tar.gz +tar -zxf flink-release-1.13.0.tar.gz +cd flink-release-1.13.0 +``` +#### 6.2 修改vim flink-runtime-web/pom.xml +说明:国内访问外网地址,由于网络限制或者网速问题,会出现下载报错或者长时间卡住,更换为国内地址。 +``` +@@ -271,6 +271,7 @@ under the License. + + + ci --cache-max=0 --no-save ++ https://mirrors.huaweicloud.com/repository/npm + + true + +@@ -283,6 +284,7 @@ under the License. + + + run build ++ https://mirrors.huaweicloud.com/repository/npm + + + +@@ -262,6 +262,7 @@ under the License. + + + v10.9.0 ++ https://mirrors.huaweicloud.com/nodejs/ + + + +``` +#### 6.3 执行编译: +``` +mvn clean install -DskipTests +多线程编译可以如下命令: +mvn clean install -DskipTests -Dfast -T 32 -Dmaven.compile.fork=true +如flink-runtime-web_2.11编译报错,可使用如下命令继续编译,节约时间。 +mvn clean install -DskipTests -rf :flink-runtime-web_2.11 +``` +#### 6.4 编译结果 +编译完成后在flink-release-1.13.0/flink-dist/target/flink-1.13.0-bin/生成目标目录flink-1.13.0。 +#### 6.5 使用鲲鹏分析扫描工具扫描编译生成的tar包,确保没有包含有x86的so和jar包。 +如果有,则参考4,将jar包替换本地仓库,并重新编译flink。 + + + diff --git "a/Docs/\347\247\273\346\244\215\346\214\207\345\215\227/README.md" "b/Docs/\347\247\273\346\244\215\346\214\207\345\215\227/README.md" new file mode 100644 index 0000000000000000000000000000000000000000..a3c011353aa6415b21566bd7dcf32244471b7991 --- /dev/null +++ "b/Docs/\347\247\273\346\244\215\346\214\207\345\215\227/README.md" @@ -0,0 +1,14 @@ +# Bigdata 移植指南 目录说明 + +此处存放Bigdata移植资料供开发者、用户参考 + +## 目录说明 +- **1-移植指南**:存放开发者关注的文档,如hadoop aarch64移植步骤及问题等 + - [hadoop移植指南](hadoop.md) + - [hive移植指南](hive.md) + - [hbase移植指南](hbase.md) + - [spark移植指南](spark.md) + - [flink移植指南](flink.md) + - [zookeeper移植指南](zookeeper.md) +## 说明 +开发者在提交文档之后,请更新此文件,刷新相关目录章节 \ No newline at end of file diff --git "a/Docs/\347\247\273\346\244\215\346\214\207\345\215\227/hadoop.md" "b/Docs/\347\247\273\346\244\215\346\214\207\345\215\227/hadoop.md" new file mode 100644 index 0000000000000000000000000000000000000000..dab295c71f8d346ab3fcac73de63fe525837da21 --- /dev/null +++ "b/Docs/\347\247\273\346\244\215\346\214\207\345\215\227/hadoop.md" @@ -0,0 +1,257 @@ +### **Hadoop-3.3.4 移植指南** + +编写日期:2023年03月09日 + +#### **1. 软硬件环境** + +##### **1.1 硬件** +| 硬件 | 说明 | +| ---------------- |---------------- | +|CPU|鲲鹏920| +|网络|Ethernet-10GE| +|存储|SATA 1T| +|内存|Hynix 512G 2400MHz| +##### **1.2 OS** +| 软件 | 说明 | +| ---------------- |---------------- | +|EulerOS|22.03| +|Kernel|5.10.0-60.18.0.50.oe2203.aarch64| +|OpenJDK|1.8.0_342| +|Maven|3.8.6| +|Hadoop|3.3.4| +#### **2.编译环境准备** +##### **2.1 编译工具安装** +`yum –y install wget openssl-devel zlib-devel automake libtool make libstdc++-static glibc-static git snappy snappy-devel fuse fuse-devel gcc.aarch64 gcc-c++.aarch64 gcc-gfortran.aarch64 libgcc.aarch64 cmake patch protobuf` +##### **2.2 安装openjdk** +安装指南参考链接:https://gitee.com/openeuler/bishengjdk-8/wikis/%E6%AF%95%E6%98%87JDK%208%20%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97?sort_id=2891179 +##### **2.3 安装maven** +###### 2.3.1 下载并安装目录 + +``` +下载: wget https://archive.apache.org/dist/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz --no-check-certificate +安装: tar -zxf apache-maven-3.8.6-bin.tar.gz -C /home/installed/ +修改maven环境变量,在/etc/profile文件末尾增加下面代码: +export JAVA_HOME=/home/installed/jdk1.8.0_342 // 注意jdk等安装路径 +export MAVEN_HOME=/home/installed/apache-maven-3.8.6 +export PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH +source /etc/profile +``` +###### 2.3.2 配置本地仓、远程仓等 +``` + +/path/to/local/repo + + + + huaweimaven + huawei maven + http://cmc-cd-mirror.rnd.huawei.com/maven/ + central + +``` +#### 3 移植分析 +| 原始jar | so文件 | +|---------------------------------|-------------------------------------------| +| lz4-1.7.1.jar | liblz4-java.so | +| netty-all-4.1.61.Final.jar | libnetty_transport_native_epoll_x86_64.so | +| leveldbjni-all-1.8.jar | libleveldbjni.so | +| snappy-java-1.0.5.jar | libsnappy.so | +| wildfly-openssl-1.0.7.Final.jar | libwfssl.so | + +#### 4.编译依赖包 +##### 4.1 编译wildfly-openssl-1.0.7.Final.jar +``` +下载源码:wget https://github.com/wildfly/wildfly-openssl/archive/1.0.7.Final.tar.gz --no-check-certificate +解压安装:tar -zxf wildfly-openssl-1.0.7.Final.tar.gz && cd wildfly-openssl-1.0.7.Final +编译命令:mvn clean package -DskipTests=true -Dmaven.javadoc.skip=true -Denforcer.skip=true +``` +Q1:修改libwfssl/src/ssl.c,868行在J2S(hostname)前增加(void *) + +Q2:手动下依赖 +wget https://repository.jboss.org/nexus/content/repositories/thirdparty-releases/org/apache/maven/plugins/maven-compiler-plugin/3.8.0-jboss-2/maven-compiler-plugin-3.8.0-jboss-2.jar https://repository.jboss.org/nexus/content/repositories/thirdparty-releases/org/apache/maven/plugins/maven-compiler-plugin/3.8.0-jboss-2/maven-compiler-plugin-3.8.0-jboss-2.pom --no-check-certificate 到本地仓库对应目录 + +##### 4.2 编译leveldbjni-all-1.8.jar +1)master分支支持aarch64,编译前需要修改pom.xml文件里面的版本号,也可在windows下载master分支的代码压缩包,再上传到服务器进行编译。 +``` +vim /etc/profile +在最后一行加入 +export GIT_SSL_NO_VERIFY=1 +保存并退出 + +git config --global url."https://".insteadOf git:// + +git clone git://github.com/fusesource/leveldbjni.git +``` +2)进入当前目录 +``` +cd leveldbjni +export LEVELDBJNI_HOME=`pwd` +``` +3)修改pom.xml文件 +注释无关操作系统类型(freebsd64、sunos64-amd64、sunos64-sparcv9、linux64-ppc64le),避免引起编译不通过。 +如下: +``` +245 +246 full +247 +248 leveldbjni-osx +249 leveldbjni-linux32 +250 leveldbjni-linux64 +251 +252 leveldbjni-win32 +253 leveldbjni-win64 +254 +255 +256 +257 leveldbjni-linux64-aarch64 +258 leveldbjni-all +259 +260 +``` +并注释 +``` +288 +289 +295 +... +315 +316 +``` +第60、61行,将编译的目标module加入leveldbjni-all和linux64模块。 +``` + 57 + 58 + 59 leveldbjni + 60 leveldbjni-linux64 + 61 leveldbjni-all + 62 + 63 +``` +4)修改leveldbjni-linux64-aarch64/pom.xml文件,第77行,修改后文件对应内容如下: +``` + 76 + 77 aarch64 + 78 leveldbjni + 79 false +``` +5)修改leveldbjni-all/pom.xml文件 +注释无关操作系统类型(freebsd64、sunos64-amd64、sunos64-sparcv9、linux64-ppc64le),避免引起编译不通过。将dependency相关的依赖注释掉,注释内容如下: +``` + 75 + ... + 93 +``` +将build的NativeCode部分注释掉,并修改部分内容,表明生成的leveldbjni-all-1.8.jar里面对应linux64目录下的so也为aarch64,后续在ambari的nodemanager启动过程中,默认使用的是该目录的so:修改后内容如下: +``` +147 +148 META-INF/native/windows32/leveldbjni.dll;osname=Win32;processor=x86, +149 META-INF/native/windows64/leveldbjni.dll;osname=Win32;processor=x86-64, +150 META-INF/native/osx/libleveldbjni.jnilib;osname=macosx;processor=x86, +151 META-INF/native/osx/libleveldbjni.jnilib;osname=macosx;processor=x86-64, +152 META-INF/native/linux32/libleveldbjni.so;osname=Linux;processor=x86, +153 META-INF/native/linux64/libleveldbjni.so;osname=Linux;processor=aarch64, +154 META-INF/native/aarch64/libleveldbjni.so;osname=Linux;processor=aarch64 +155 +156 +``` +6)修改所有pom.xml文件中的版本号,将所有pom.xml文件中的版本“99-master-SNAPSHOT”改为 “1.8”: + +find . -name pom.xml | xargs sed -i 's/99-master-SNAPSHOT/1.8/g' + +7)编译 +mvn clean package -P download -P linux64-aarch64 -DskipTests + +#### 5 编译hadoop +##### 5.1 编译 +``` +编译前安装snappy snappy-devel: +yum install -y snappy snappy-devel + +编译命令:mvn package -DskipTests -Pdist,native -Dtar -Dsnappy.lib=/usr/lib64 -Dbundle.snappy -Dmaven.javadoc.skip=true +``` +##### 5.2 问题 +###### Q1:找不到sasl。 + +描述信息:Cound not find a SASL library (GSASL (gsasl) or Cyrus SASL (libsasl2)) + +缺失相关依赖,解决: +`yum install -y cyrus-sasl.aarch64 cyrus-sasl-lib.aarch64 cyrus-sasl-devel.aarch64` + +###### Q2:yarn下载失败,代理或网络的问题 + +描述:[ERROR] Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.11.2:yarn (yarn install) on project hadoop-yarn-applications-catalog-webapp: Failed to run task: 'yarn ' failed. org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1) -> [Help 1] + +解决: +1.安装Node.js +下载地址: http://nodejs.cn/download/ + +2.配置npm + +内网限制原因,需要修改npm源或者配置代理,才可以通过npm正常下载。 + +修改npm源 +``` +npm config rm proxy +npm config rm http-proxy +npm config rm https-proxy +npm config set no-proxy .huawei.com +npm config set registry http://cmc-cd-mirror.rnd.huawei.com/npm +``` +3.安装yarn +``` +npm install –g yarn +yarn config list 查找strict-ssl选项,将true设置为false, +yarn config set strict-ssl false +yarn config list 确认修改完成。 +``` diff --git "a/Docs/\347\247\273\346\244\215\346\214\207\345\215\227/hbase.md " "b/Docs/\347\247\273\346\244\215\346\214\207\345\215\227/hbase.md " new file mode 100644 index 0000000000000000000000000000000000000000..b4bbb065eec9cee3efffc5dcf063f08ac5ce2858 --- /dev/null +++ "b/Docs/\347\247\273\346\244\215\346\214\207\345\215\227/hbase.md " @@ -0,0 +1,257 @@ +### **Hbase-2.5.0 移植指南** + +编写日期:2023年03月13日 + +#### **1. 软硬件环境** + +##### **1.1 硬件** +CPU 鲲鹏920 +网络 Ethernet-10GE +存储 SATA 1T +内存 Hynix 512G 2400MHz +##### **1.2 OS** +EulerOS 22.03 +Kernel 5.10.0-60.18.0.50.oe2203.aarch64 +OpenJDK 1.8.0_342 +Maven 3.8.6 +Hadoop 3.3.4 +#### **2.编译环境准备** +##### **2.1 编译工具安装** +`yum –y install wget openssl-devel zlib-devel automake libtool make libstdc++-static glibc-static git snappy snappy-devel fuse fuse-devel gcc.aarch64 gcc-c++.aarch64 gcc-gfortran.aarch64 libgcc.aarch64 cmake patch protobuf` +##### **2.2 安装openjdk** +安装指南参考链接:https://gitee.com/openeuler/bishengjdk-8/wikis/%E6%AF%95%E6%98%87JDK%208%20%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97?sort_id=2891179 +##### **2.3 安装maven** +###### 2.3.1 下载并安装目录 + +``` +下载: wget https://archive.apache.org/dist/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz --no-check-certificate +安装: tar -zxf apache-maven-3.8.6-bin.tar.gz -C /home/installed/ +修改maven环境变量,在/etc/profile文件末尾增加下面代码: +export JAVA_HOME=/home/installed/jdk1.8.0_342 // 注意jdk等安装路径 +export MAVEN_HOME=/home/installed/apache-maven-3.8.6 +export PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH +source /etc/profile +``` +###### 2.3.2 配置本地仓、远程仓等 +``` + +/path/to/local/repo + + + + huaweimaven + huawei maven + http://cmc-cd-mirror.rnd.huawei.com/maven/ + central + +``` +#### 3 移植分析 +| 原始jar | so文件 | +|---------------------------------|-------------------------------------------| +| commons-crypto-1.1.0.jar | libcommons-crypto.so | +| jine-2.14.6.jar | libjansi.so | +| leveldbjni-all-1.8.jar | libleveldbjni.so | +#### 4.编译依赖包 +##### 4.1编译commons-crypto-1.1.0.jar + +``` +下载源码:wget https://github.com/apache/commons-crypto/archive/refs/tags/rel/commons-crypto-1.1.0.tar.gz --no-check-certificate +解压:tar -zxf commons-crypto-1.1.0.tar.gz +进入目录:cd commons-crypto-rel-commons-crypto-1.1.0 +执行编译命令:mvn clean install -DskipTests +``` +##### 4.2 编译leveldbjni-all-1.8.jar +1)master分支支持aarch64,编译前需要修改pom.xml文件里面的版本号,也可在windows下载master分支的代码压缩包,再上传到服务器进行编译。 +``` +vim /etc/profile +在最后一行加入 +export GIT_SSL_NO_VERIFY=1 +保存并退出 + +git config --global url."https://".insteadOf git:// + +git clone git://github.com/fusesource/leveldbjni.git +``` +2)进入当前目录 +``` +cd leveldbjni +export LEVELDBJNI_HOME=`pwd` +``` +3)修改pom.xml文件 +注释无关操作系统类型(freebsd64、sunos64-amd64、sunos64-sparcv9、linux64-ppc64le),避免引起编译不通过。 +如下: +``` +245 +246 full +247 +248 leveldbjni-osx +249 leveldbjni-linux32 +250 leveldbjni-linux64 +251 +252 leveldbjni-win32 +253 leveldbjni-win64 +254 +255 +256 +257 leveldbjni-linux64-aarch64 +258 leveldbjni-all +259 +260 +``` +并注释 +``` +288 +289 +295 +... +315 +316 +``` +第60、61行,将编译的目标module加入leveldbjni-all和linux64模块。 +``` + 57 + 58 + 59 leveldbjni + 60 leveldbjni-linux64 + 61 leveldbjni-all + 62 + 63 +``` +4)修改leveldbjni-linux64-aarch64/pom.xml文件,第77行,修改后文件对应内容如下: +``` + 76 + 77 aarch64 + 78 leveldbjni + 79 false +``` +5)修改leveldbjni-all/pom.xml文件 +注释无关操作系统类型(freebsd64、sunos64-amd64、sunos64-sparcv9、linux64-ppc64le),避免引起编译不通过。将dependency相关的依赖注释掉,注释内容如下: +``` + 75 + ... + 93 +``` +将build的NativeCode部分注释掉,并修改部分内容,表明生成的leveldbjni-all-1.8.jar里面对应linux64目录下的so也为aarch64,后续在ambari的nodemanager启动过程中,默认使用的是该目录的so:修改后内容如下: +``` +147 +148 META-INF/native/windows32/leveldbjni.dll;osname=Win32;processor=x86, +149 META-INF/native/windows64/leveldbjni.dll;osname=Win32;processor=x86-64, +150 META-INF/native/osx/libleveldbjni.jnilib;osname=macosx;processor=x86, +151 META-INF/native/osx/libleveldbjni.jnilib;osname=macosx;processor=x86-64, +152 META-INF/native/linux32/libleveldbjni.so;osname=Linux;processor=x86, +153 META-INF/native/linux64/libleveldbjni.so;osname=Linux;processor=aarch64, +154 META-INF/native/aarch64/libleveldbjni.so;osname=Linux;processor=aarch64 +155 +156 +``` +6)修改所有pom.xml文件中的版本号,将所有pom.xml文件中的版本“99-master-SNAPSHOT”改为 “1.8”: + +find . -name pom.xml | xargs sed -i 's/99-master-SNAPSHOT/1.8/g' + +7)编译 +mvn clean package -P download -P linux64-aarch64 -DskipTests + +##### 4.3编译jine-2.14.6.jar +依赖关系:jline-2.14.6--> jansi-1.12 --> jansi-native-1.7 +###### 4.3.1 编译jansi-native-1.7 + +``` +下载源码:wget https://github.com/fusesource/jansi-native/archive/jansi-native-1.7.tar.gz --no-check-certificate +解压并进入目录:tar zxf jansi-native-1.7.tar.gz +cd jansi-native-jansi-native-1.7 +``` +修改pom.xml的hawtjni-version:改为1.16与openEuler yum源下载版本对应:vim pom.xml +39 +``` +39 1.16 +``` +修改280行 maven-hawtjni-plugin 为 hawtjni-maven-plugin +``` +280 hawtjni-maven-plugin +``` +执行编译: +``` +mvn install -Dplatform=linux64 +``` +结果在“./target”目录下 +###### 4.3.2 编译jansi-1.12 +下载Jansi 1.12版本源码,并进入源码目录 +``` +wget https://github.com/fusesource/jansi/archive/jansi-project-1.12.tar.gz +tar -zxvf jansi-project-1.12.tar.gz +cd jansi-jansi-project-1.12/ +``` +修改pom.xml里jansi-native的版本为1.7: vim pom.xml +40 +``` +40 1.7 +``` +执行编译: +``` +mvn install -Dmaven.javadoc.skip=true +``` +###### 4.3.3 编译jline-2.14.6 +下载jline-2.14.6源码,并解压进入目录 +``` +wget https://github.com/jline/jline2/archive/refs/tags/jline-2.14.6.tar.gz --no-check-certificate +tar -zxvf jline-2.14.6.tar.gz +cd jline2-jline-2.14.6 +``` +执行编译: +``` +mvn install -Dmaven.javadoc.skip=true -DskipTests +``` +#### 5编译hbase-2.5.0 +编译命令: +``` +mvn clean package -DskipTests assembly:single +``` diff --git "a/Docs/\347\247\273\346\244\215\346\214\207\345\215\227/hive.md" "b/Docs/\347\247\273\346\244\215\346\214\207\345\215\227/hive.md" new file mode 100644 index 0000000000000000000000000000000000000000..17e47fc46d184921a2035a1309a455ab0770bbc0 --- /dev/null +++ "b/Docs/\347\247\273\346\244\215\346\214\207\345\215\227/hive.md" @@ -0,0 +1,467 @@ +### **hive-3.1.3 移植指南** + +编写日期:2023年03月13日 + +#### **1. 软硬件环境** + +##### **1.1 硬件** +CPU 鲲鹏920 +网络 Ethernet-10GE +存储 SATA 1T +内存 Hynix 512G 2400MHz +##### **1.2 OS** +EulerOS 22.03 +Kernel 5.10.0-60.18.0.50.oe2203.aarch64 +OpenJDK 1.8.0_342 +Maven 3.8.6 +Hadoop 3.3.4 +#### **2.编译环境准备** +##### **2.1 编译工具安装** +`yum –y install wget openssl-devel zlib-devel automake libtool make libstdc++-static glibc-static git snappy snappy-devel fuse fuse-devel gcc.aarch64 gcc-c++.aarch64 gcc-gfortran.aarch64 libgcc.aarch64 cmake patch protobuf` +##### **2.2 安装openjdk** +安装指南参考链接:https://gitee.com/openeuler/bishengjdk-8/wikis/%E6%AF%95%E6%98%87JDK%208%20%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97?sort_id=2891179 +##### **2.3 安装maven** +###### 2.3.1 下载并安装目录 + +``` +下载: wget https://archive.apache.org/dist/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz --no-check-certificate +安装: tar -zxf apache-maven-3.8.6-bin.tar.gz -C /home/installed/ +修改maven环境变量,在/etc/profile文件末尾增加下面代码: +export JAVA_HOME=/home/installed/jdk1.8.0_342 // 注意jdk等安装路径 +export MAVEN_HOME=/home/installed/apache-maven-3.8.6 +export PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH +source /etc/profile +``` +###### 2.3.2 配置本地仓、远程仓等 +``` + +/path/to/local/repo + + + + huaweimaven + huawei maven + http://cmc-cd-mirror.rnd.huawei.com/maven/ + central + +``` +#### 3 移植分析 +| 原始jar | so文件 | +|---------------------------------|-------------------------------------------| +| commons-crypto-1.1.0.jar | libcommons-crypto.so | +| jline-2.12.jar | libjansi.so | +| netty-all-4.1.17.Final.jar | libnetty_transport_native_epoll_x86_64.so | + +#### 4 编译依赖包 +##### 4.1 编译commons-crypto-1.1.0.jar +``` +下载源码:wget https://github.com/apache/commons-crypto/archive/refs/tags/rel/commons-crypto-1.1.0.tar.gz --no-check-certificate +解压:tar -zxf commons-crypto-1.1.0.tar.gz +进入目录:cd commons-crypto-rel-commons-crypto-1.1.0 +执行编译命令:mvn clean install -DskipTests +``` +##### 4.2 编译jline-2.12.jar +依赖关系:jline-2.12 --> jansi-1.12 --> jansi-native-1.7 +###### 4.2.1 编译jansi-native-1.7 + +``` +下载源码:wget https://github.com/fusesource/jansi-native/archive/jansi-native-1.7.tar.gz --no-check-certificate +解压并进入目录:tar zxf jansi-native-1.7.tar.gz +cd jansi-native-jansi-native-1.7 +``` +修改pom.xml的hawtjni-version:改为1.16与openEuler yum源下载版本对应:vim pom.xml +39 +``` +39 1.16 +``` +修改280行 maven-hawtjni-plugin 为 hawtjni-maven-plugin +``` +280 hawtjni-maven-plugin +``` +执行编译: +``` +mvn install -Dplatform=linux64 +``` +结果在“./target”目录下 + +###### 4.2.2 编译jansi-1.12 +下载Jansi 1.12版本源码,并进入源码目录 +``` +wget https://github.com/fusesource/jansi/archive/jansi-project-1.12.tar.gz +tar -zxvf jansi-project-1.12.tar.gz +cd jansi-jansi-project-1.12/ +``` +修改pom.xml里jansi-native的版本为1.7: vim pom.xml +40 +``` +40 1.7 +``` +执行编译: +``` +mvn install -Dmaven.javadoc.skip=true +``` +###### 4.3.3 编译jline-2.12 +下载jline-2.12源码,并解压进入目录 +``` +wget https://github.com/jline/jline2/archive/refs/tags/jline-2.12.tar.gz --no-check-certificate +tar -zxvf jline-2.12.tar.gz +cd jline2-jline-2.12 +``` +修改pom.xml文件第120行jansi.version的版本1.11为1.12 +``` +120 1.12 +``` + +执行编译: +``` +mvn install -Dmaven.javadoc.skip=true -DskipTests +``` + +##### 4.3 netty-all-4.1.17.Final.jar 移植到本地仓对应目录io/netty/netty-all/4.1.17.Final/下 +可直接从鲲鹏镜像仓拉取: +``` +wget https://repo.huaweicloud.com/kunpeng/maven/io/netty/netty-all/4.0.17.Final/netty-all-4.0.17.Final.jar https://repo.huaweicloud.com/kunpeng/maven/io/netty/netty-all/4.0.17.Final/netty-all-4.0.17.Final.jar.sha1 https://repo.huaweicloud.com/kunpeng/maven/io/netty/netty-all/4.0.17.Final/netty-all-4.0.17.Final.pom https://repo.huaweicloud.com/kunpeng/maven/io/netty/netty-all/4.0.17.Final/netty-all-4.0.17.Final.pom.sha1 --no-check-certificate +``` + + +#### 5 编译Hive-3.1.3 +##### 5.1 提升hive的guave版本 +原因:集群中所安装的Hadoop-3.3.4中和Hive-3.1.3中包含guava的依赖,Hadoop-3.3.4中的版本为guava-27.0-jre,而Hive-3.1.3中的版本为guava-19.0。由于Hive运行时会加载Hadoop依赖,故会出现依赖冲突的问题。 + +修改pom.xml文件 + +将pom.xml文件中147行的 19.0修改为27.0-jre +##### 5.2 无法推断类型变量V问题解决 +Error:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:compile (default-compile) on project hive-llap-common: Compilation failure: Compilation failure + +原因:无法推断类型变量V (实际参数列表和形式参数列表长度不同) + +解决:修改下列源码 +1) vim druid-handler/src/java/org/apache/hadoop/hive/druid/serde/DruidScanQueryRecordReader.java +``` +28 import com.google.common.collect.Iterators; +29 +30 import java.io.IOException; +31 + import java.util.Collections; +32 import java.util.Iterator; +33 import java.util.List; +``` + +``` +44 +45 private ScanResultValue current; +46 +47 - private Iterator> compactedValues = Iterators.emptyIterator(); +48 + private Iterator> compactedValues = Collections.emptyIterator(); +49 +50 @Override +51 protected JavaType getResultTypeDef() { +``` +2) vim llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/AMReporter.java + + +``` +174 Thread.getDefaultUncaughtExceptionHandler().uncaughtException(Thread.currentThread(), t); +175 } +176 } +177 - }); +177 + },MoreExecutors.directExecutor()); +178 // TODO: why is this needed? we could just save the host and port? +179 nodeId = LlapNodeId.getInstance(localAddress.get().getHostName(), localAddress.get().getPort()); +180 LOG.info("AMReporter running with DaemonId: {}, NodeId: {}", daemonId, nodeId); + +... + +274 LOG.warn("Failed to send taskKilled for {}. The attempt will likely time out.", +275 taskAttemptId); +276 } +277 - }); +277 + },MoreExecutors.directExecutor()); +278 } +279 +280 public void queryComplete(QueryIdentifier queryIdentifier) { + +... + +342 amNodeInfo.amNodeId, currentQueryIdentifier, t); +343 queryFailedHandler.queryFailed(currentQueryIdentifier); +344 } +345 - }); +345 + },MoreExecutors.directExecutor()); +346 } +347 } +348 } catch (InterruptedException e) { + +``` +3) vim llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/LlapTaskReporter.java +``` +128 sendCounterInterval, maxEventsToGet, requestCounter, containerIdStr, initialEvent, +129 fragmentRequestId, wmCounters); +130 ListenableFuture future = heartbeatExecutor.submit(currentCallable); +131 - Futures.addCallback(future, new HeartbeatCallback(errorReporter)); +131 + Futures.addCallback(future, new HeartbeatCallback(errorReporter),MoreExecutors.directExecutor()); +132 } +``` +4) vim llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/TaskExecutorService.java +``` +175 executionCompletionExecutorService = MoreExecutors.listeningDecorator( +176 executionCompletionExecutorServiceRaw); +177 ListenableFuture future = waitQueueExecutorService.submit(new WaitQueueWorker()); +178 - Futures.addCallback(future, new WaitQueueWorkerCallback()); +178 + Futures.addCallback(future, new WaitQueueWorkerCallback(),MoreExecutors.directExecutor()); +179 } +180 +181 private LlapQueueComparatorBase createComparator( +``` +5) vim ql/src/test/org/apache/hadoop/hive/ql/exec/tez/SampleTezSessionState.java +``` +19 package org.apache.hadoop.hive.ql.exec.tez; +20 +21 - import com.google.common.util.concurrent.Futures; + - import com.google.common.util.concurrent.FutureCallback; + - import com.google.common.util.concurrent.ListenableFuture; + - import com.google.common.util.concurrent.SettableFuture; +22 + import com.google.common.util.concurrent.*; +23 +24 import java.io.IOException; +25 import java.util.concurrent.ScheduledExecutorService; +26 import javax.security.auth.login.LoginException; + +... + +126 public void onFailure(Throwable t) { +127 future.setException(t); +128 } + - }); +129 + }, MoreExecutors.directExecutor()); +130 return future; +131 } +132 +``` +6) vim ql/src/java/org/apache/hadoop/hive/ql/exec/tez/WorkloadManager.java +``` +18 package org.apache.hadoop.hive.ql.exec.tez; +19 +20 + import com.google.common.util.concurrent.*; +21 import org.apache.hadoop.hive.metastore.api.WMPoolSchedulingPolicy; +22 import org.apache.hadoop.hive.metastore.utils.MetaStoreUtils; +23 +24 import com.google.common.annotations.VisibleForTesting; +25 import com.google.common.collect.Lists; +26 import com.google.common.collect.Sets; +27 import com.google.common.math.DoubleMath; + - import com.google.common.util.concurrent.FutureCallback; + - import com.google.common.util.concurrent.Futures; + - import com.google.common.util.concurrent.ListenableFuture; + - import com.google.common.util.concurrent.SettableFuture; + - import com.google.common.util.concurrent.ThreadFactoryBuilder; +28 +29 import java.util.ArrayList; +30 import java.util.Collection; + +... + +1088 } +1089 +1090 private void failOnFutureFailure(ListenableFuture future) { + - Futures.addCallback(future, FATAL_ERROR_CALLBACK); +1091 + Futures.addCallback(future, FATAL_ERROR_CALLBACK, MoreExecutors.directExecutor()); +1092 } +1093 +1094 private void queueGetRequestOnMasterThread( + +... + +1921 +1922 public void start() throws Exception { +1923 ListenableFuture getFuture = tezAmPool.getSessionAsync(); + - Futures.addCallback(getFuture, this); +1924 + Futures.addCallback(getFuture, this,MoreExecutors.directExecutor()); +1925 } +1926 +1927 @Override + +... + +1975 case GETTING: { +1976 ListenableFuture waitFuture = session.waitForAmRegistryAsync( +1977 amRegistryTimeoutMs, timeoutPool); + - Futures.addCallback(waitFuture, this); +1978 + Futures.addCallback(waitFuture, this,MoreExecutors.directExecutor()); +1979 break; +1980 } +1981 case WAITING_FOR_REGISTRY: { +``` +7) vim llap-tez/src/java/org/apache/hadoop/hive/llap/tezplugins/LlapTaskSchedulerService.java +``` +744 }, 10000L, TimeUnit.MILLISECONDS); +745 +746 nodeEnablerFuture = nodeEnabledExecutor.submit(nodeEnablerCallable); + - Futures.addCallback(nodeEnablerFuture, new LoggingFutureCallback("NodeEnablerThread", LOG)); +747 + Futures.addCallback(nodeEnablerFuture, new LoggingFutureCallback("NodeEnablerThread", LOG),MoreExecutors.directExecutor()); +748 +749 delayedTaskSchedulerFuture = +750 delayedTaskSchedulerExecutor.submit(delayedTaskSchedulerCallable); +751 Futures.addCallback(delayedTaskSchedulerFuture, + - new LoggingFutureCallback("DelayedTaskSchedulerThread", LOG)); +752 + new LoggingFutureCallback("DelayedTaskSchedulerThread", LOG),MoreExecutors.directExecutor()); +753 +754 schedulerFuture = schedulerExecutor.submit(schedulerCallable); + - Futures.addCallback(schedulerFuture, new LoggingFutureCallback("SchedulerThread", LOG)); +755 + Futures.addCallback(schedulerFuture, new LoggingFutureCallback("SchedulerThread", LOG),MoreExecutors.directExecutor()); +756 +757 registry.start(); +758 registry.registerStateChangeListener(new NodeStateChangeListener()); + +``` +8) vim llap-common/src/java/org/apache/hadoop/hive/llap/AsyncPbRpcProxy.java +``` +171 CallableRequest request, LlapNodeId nodeId) { +172 ListenableFuture future = executor.submit(request); +173 Futures.addCallback(future, new ResponseCallback( + - request.getCallback(), nodeId, this)); +174 + request.getCallback(), nodeId, this),MoreExecutors.directExecutor()); +175 } +176 +177 @VisibleForTesting + +... + +283 LOG.warn("RequestManager shutdown with error", t); +284 } +285 } + - }); +286 + },MoreExecutors.directExecutor()); +287 } +288 +289 @Override +``` +##### 5.3 整合spark版本,以下以整合spark3.3.0为例 +1)修改hive源码目录下pom.xml文件第201开始: +``` +3.3.0 +2.12 +2.12.13 +``` +2)vim ql/src/test/org/apache/hadoop/hive/ql/stats/TestStatsUtils.java +``` +31 import org.apache.hadoop.hive.ql.plan.ColStatistics.Range; +32 import org.apache.hadoop.hive.serde.serdeConstants; +33 import org.junit.Test; + - import org.spark_project.guava.collect.Sets; +34 + import org.sparkproject.guava.collect.Sets; +35 +36 public class TestStatsUtils { +``` +3) vim spark-client/src/main/java/org/apache/hive/spark/client/metrics/ShuffleWriteMetrics.java +``` +47 } +48 +49 public ShuffleWriteMetrics(TaskMetrics metrics) { + - this(metrics.shuffleWriteMetrics().shuffleBytesWritten(), + - metrics.shuffleWriteMetrics().shuffleWriteTime()); +50 + this(metrics.shuffleWriteMetrics().bytesWritten(), +51 + metrics.shuffleWriteMetrics().bytesWritten()); +52 } +53 +54 } + +``` +4) vim spark-client/src/main/java/org/apache/hive/spark/counter/SparkCounter.java +``` +19 +20 import java.io.Serializable; +21 + - import org.apache.spark.Accumulator; + - import org.apache.spark.AccumulatorParam; +22 import org.apache.spark.api.java.JavaSparkContext; +23 + import org.apache.spark.util.LongAccumulator; +24 +25 public class SparkCounter implements Serializable { +26 +27 private String name; +28 private String displayName; + - private Accumulator accumulator; +29 + private LongAccumulator accumulator; +30 +31 // Values of accumulators can only be read on the SparkContext side. This field is used when +32 // creating a snapshot to be sent to the RSC client. + +... + +54 +55 this.name = name; +56 this.displayName = displayName; + - LongAccumulatorParam longParam = new LongAccumulatorParam(); +57 + String accumulatorName = groupName + "_" + name; + - this.accumulator = sparkContext.accumulator(initValue, accumulatorName, longParam); +58 + this.accumulator = sparkContext.sc().longAccumulator(accumulatorName); +59 } +60 +61 public long getValue() { + +... +86 +87 return new SparkCounter(name, displayName, accumulator.value()); +88 } + - + - class LongAccumulatorParam implements AccumulatorParam { + - + - @Override + - public Long addAccumulator(Long t1, Long t2) { + - return t1 + t2; + - } + - + - @Override + - public Long addInPlace(Long r1, Long r2) { + - return r1 + r2; + - } + - + - @Override + - public Long zero(Long initialValue) { + - return 0L; + - } + - } +89 +90 } +``` +##### 5.4 修复插入数据的bug +源码按照链接修复16个类:https://github.com/gitlbo/hive/commit/c073e71ef43699b7aa68cad7c69a2e8f487089fd + +#### 6 编译Hive-3.1.3 +``` +编译命令:mvn clean package -Pdist -DskipTests -Dmaven.javadoc.skip=true +``` +##### 6.1 问题:protoc-2.5.0linux-aarch_64.exe本地仓缺失 +1) 下载并解压源码 +``` +wget https://github.com/protocolbuffers/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz + +tar -zxf protobuf-2.5.0.tar.gz + +mv protobuf-2.5.0 /opt/tools/installed/ + +cd /opt/tools/installed/protobuf-2.5.0 +``` +2) 安装依赖库 +``` +yum -y install patch automake libtool +``` +3) 上传protoc.patch到服务器,打补丁,其中protoc.patch的路径视实际情况而定。 +``` +wget https://obs-mirror-ftp4.obs.cn-north-4.myhuaweicloud.com/tools/protoc.patch + +cp protoc.patch ./src/google/protobuf/stubs/ + +cd ./src/google/protobuf/stubs/ + +patch -p1 < protoc.patch + +cd - +``` +4) 编译并安装到系统默认目录 +``` +./autogen.sh && ./configure CFLAGS='-fsigned-char' && make –j128 && make install +``` +5) Protoc部署在本地Maven仓库中 +``` +mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=2.5.0 -Dclassifier=linux-aarch_64 -Dpackaging=exe -Dfile=/usr/local/bin/protoc +``` diff --git "a/Docs/\347\247\273\346\244\215\346\214\207\345\215\227/spark.md" "b/Docs/\347\247\273\346\244\215\346\214\207\345\215\227/spark.md" new file mode 100644 index 0000000000000000000000000000000000000000..ec3460c78c56dd2f4be0b823fc2fd75614e1448c --- /dev/null +++ "b/Docs/\347\247\273\346\244\215\346\214\207\345\215\227/spark.md" @@ -0,0 +1,290 @@ +### **spark-3.3.0 移植指南** + +编写日期:2023年03月10日 + +#### **1. 软硬件环境** + +##### **1.1 硬件** +CPU 鲲鹏920 +网络 Ethernet-10GE +存储 SATA 1T +内存 Hynix 512G 2400MHz +##### **1.2 OS** +EulerOS 22.03 +Kernel 5.10.0-60.18.0.50.oe2203.aarch64 +OpenJDK 1.8.0_342 +Maven 3.8.6 +Hadoop 3.3.4 +#### **2.编译环境准备** +##### **2.1 编译工具安装** +`yum –y install wget openssl-devel zlib-devel automake libtool make libstdc++-static glibc-static git snappy snappy-devel fuse fuse-devel gcc.aarch64 gcc-c++.aarch64 gcc-gfortran.aarch64 libgcc.aarch64 cmake patch protobuf` +##### **2.2 安装openjdk** +安装指南参考链接:https://gitee.com/openeuler/bishengjdk-8/wikis/%E6%AF%95%E6%98%87JDK%208%20%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97?sort_id=2891179 +##### **2.3 安装maven** +###### 2.3.1 下载并安装目录 + +``` +下载: wget https://archive.apache.org/dist/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz --no-check-certificate +安装: tar -zxf apache-maven-3.8.6-bin.tar.gz -C /home/installed/ +修改maven环境变量,在/etc/profile文件末尾增加下面代码: +export JAVA_HOME=/home/installed/jdk1.8.0_342 // 注意jdk等安装路径 +export MAVEN_HOME=/home/installed/apache-maven-3.8.6 +export PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH +source /etc/profile +``` +###### 2.3.2 配置本地仓、远程仓等 +``` + +/path/to/local/repo + + + + huaweimaven + huawei maven + http://cmc-cd-mirror.rnd.huawei.com/maven/ + central + +``` +#### 3 移植分析 +| 原始jar | so文件 | +|---------------------------------|-------------------------------------------| +| commons-crypto-1.1.0.jar | libcommons-crypto.so | +| jline-2.12.1.jar | libjansi.so | +| leveldbjni-all-1.8.jar | libleveldbjni.so | +| netty-all-4.1.74.Final.jar | libnetty_transport_native_epoll_x86_64.so | +| scala-compiler-2.12.15.jar | libjansi.so | + +#### 4.编译依赖包 +##### 4.1 编译commons-crypto-1.1.0.jar + +``` +下载源码:wget https://github.com/apache/commons-crypto/archive/refs/tags/rel/commons-crypto-1.1.0.tar.gz --no-check-certificate +解压:tar -zxf commons-crypto-1.1.0.tar.gz +进入目录:cd commons-crypto-rel-commons-crypto-1.1.0 +执行编译命令:mvn clean install -DskipTests +``` +##### 4.2 编译leveldbjni-all-1.8.jar +1)master分支支持aarch64,编译前需要修改pom.xml文件里面的版本号,也可在windows下载master分支的代码压缩包,再上传到服务器进行编译。 +``` +vim /etc/profile +在最后一行加入 +export GIT_SSL_NO_VERIFY=1 +保存并退出 + +git config --global url."https://".insteadOf git:// + +git clone git://github.com/fusesource/leveldbjni.git +``` +2)进入当前目录 +``` +cd leveldbjni +export LEVELDBJNI_HOME=`pwd` +``` +3)修改pom.xml文件 +注释无关操作系统类型(freebsd64、sunos64-amd64、sunos64-sparcv9、linux64-ppc64le),避免引起编译不通过。 +如下: +``` +245 +246 full +247 +248 leveldbjni-osx +249 leveldbjni-linux32 +250 leveldbjni-linux64 +251 +252 leveldbjni-win32 +253 leveldbjni-win64 +254 +255 +256 +257 leveldbjni-linux64-aarch64 +258 leveldbjni-all +259 +260 +``` +并注释 +``` +288 +289 +295 +... +315 +316 +``` +第60、61行,将编译的目标module加入leveldbjni-all和linux64模块。 +``` + 57 + 58 + 59 leveldbjni + 60 leveldbjni-linux64 + 61 leveldbjni-all + 62 + 63 +``` +4)修改leveldbjni-linux64-aarch64/pom.xml文件,第77行,修改后文件对应内容如下: +``` + 76 + 77 aarch64 + 78 leveldbjni + 79 false +``` +5)修改leveldbjni-all/pom.xml文件 +注释无关操作系统类型(freebsd64、sunos64-amd64、sunos64-sparcv9、linux64-ppc64le),避免引起编译不通过。将dependency相关的依赖注释掉,注释内容如下: +``` + 75 + ... + 93 +``` +将build的NativeCode部分注释掉,并修改部分内容,表明生成的leveldbjni-all-1.8.jar里面对应linux64目录下的so也为aarch64,后续在ambari的nodemanager启动过程中,默认使用的是该目录的so:修改后内容如下: +``` +147 +148 META-INF/native/windows32/leveldbjni.dll;osname=Win32;processor=x86, +149 META-INF/native/windows64/leveldbjni.dll;osname=Win32;processor=x86-64, +150 META-INF/native/osx/libleveldbjni.jnilib;osname=macosx;processor=x86, +151 META-INF/native/osx/libleveldbjni.jnilib;osname=macosx;processor=x86-64, +152 META-INF/native/linux32/libleveldbjni.so;osname=Linux;processor=x86, +153 META-INF/native/linux64/libleveldbjni.so;osname=Linux;processor=aarch64, +154 META-INF/native/aarch64/libleveldbjni.so;osname=Linux;processor=aarch64 +155 +156 +``` +6)修改所有pom.xml文件中的版本号,将所有pom.xml文件中的版本“99-master-SNAPSHOT”改为 “1.8”: + +find . -name pom.xml | xargs sed -i 's/99-master-SNAPSHOT/1.8/g' + +7)编译 +mvn clean package -P download -P linux64-aarch64 -DskipTests + +#### 4.3编译netty-all-4.1.74.Final.jar + +``` +下载源码:wget https://github.com/netty/netty/archive/netty-4.1.74.Final.tar.gz --no-check-certificate +解压:tar zxf netty-4.1.74.Final.tar.gz +进入目录修改pom.xml文件,第545行:将tcnative.verision 改为2.0.36.Final + +从kunpeng镜像仓下载已经移植的netty-tcnative jar包放至本地仓库路径下对应目录io/netty/netty-tcnative/2.0.36.Final/ +wget https://repo.huaweicloud.com/kunpeng/maven/io/netty/netty-tcnative/2.0.36.Final/netty-tcnative-2.0.36.Final.jar https://repo.huaweicloud.com/kunpeng/maven/io/netty/netty-tcnative/2.0.36.Final/netty-tcnative-2.0.36.Final.pom https://repo.huaweicloud.com/kunpeng/maven/io/netty/netty-tcnative/2.0.36.Final/netty-tcnative-2.0.36.Final.jar.sha1 https://repo.huaweicloud.com/kunpeng/maven/io/netty/netty-tcnative/2.0.36.Final/netty-tcnative-2.0.36.Final.pom.sha1 --no-check-certificate + +修改pom.xml,注释以下代码 +1190 + +编译:mvn package install -DskipTests +``` +#### 4.4编译scala-compiler-2.12.15.jar +##### 4.4.1sbt工具下载配置: +``` +下载sbt:wget https://github.com/sbt/sbt/releases/download/v1.3.10/sbt-1.3.10.zip --no-check-certificate +解压:unzip sbt-1.3.10.zip +mv sbt-1.3.10 sbt +进入目录sbt/conf并配置sbtconfig.txt: +vim sbtconfig.txt +``` +sbtconfig.txt内容如下: +``` +-XX:ReservedCodeCacheSize=128m +-XX:+CMSClassUnloadingEnabled1 + +# Set the extra sbt options + +-Dsbt.log.format=true +-Dfile.encoding=UTF8 + +-Dsbt.repository.config="/root/.sbt/repositories" +-Dsbt.override.build.repos=true + +#以下网络代理根据是否需要再进行配置 +-Dhttp.proxyHost= #例:-Dhttp.proxyHost=http://*.*.*.* 网络代理ip地址 +-Dhttp.proxyPort= #网络代理ip端口 +-Dhttps.proxyHost= #例:-Dhttp.proxyHost=http://*.*.*.* 网络代理ip地址 +-Dhttps.proxyPort= #网络代理ip端口 +``` +配置仓库代理: +``` +[repositories] + local + huaweicloud-maven: https://repo.huaweicloud.com/repository/maven/ + maven-central: https://repo1.maven.org/maven2/ + sbt-plugin-repo: https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext] + typesafe: https://dl.bintray.com/typesafe/ivy-releases/ , [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly + +``` +##### 4.4.2编译scala-compiler-2.12.15.jar +``` +下载源码:wget https://codeload.github.com/scala/scala/tar.gz/v2.12.15 +解压:tar -zxf scala-2.12.7.tar.gz +cd scala-2.12.15/ + +编译命令:sbt package + +编译完成之后的 scala-compiler.jar 在如下路径下 +build/pack/lib/scala-compiler.jar + +进行mvn构建本地仓jar包 +mvn install:install-file -Dpackaging=jar -Dfile=build-sbt/pack/lib/scala-compiler.jar -DgroupId=org.scala-lang -DartifactId=scala-compiler -Dversion=2.12.15 +``` +#### 5编译spark-3.3.0 +命令:mvn -Pyarn -Phadoop-3.3 -Dhadoop.version=3.3.4 -Phive -Phive-thriftserver -DskipTests clean package + +打包(记得修改./dev/make-distribution.sh里的mvn路径为自己maven的路径) + +第39行:MVN="$SPARK_HOME/build/mvn" + +打包命令:./dev/make-distribution.sh --tgz -DskipTests=true -Phive -Phive-thriftserver -Pyarn diff --git "a/Docs/\347\247\273\346\244\215\346\214\207\345\215\227/zookeeper.md" "b/Docs/\347\247\273\346\244\215\346\214\207\345\215\227/zookeeper.md" new file mode 100644 index 0000000000000000000000000000000000000000..09ce137a72da15c9fb9880601e38527f6fef7934 --- /dev/null +++ "b/Docs/\347\247\273\346\244\215\346\214\207\345\215\227/zookeeper.md" @@ -0,0 +1,76 @@ +### **zookeeper-3.8.1移植指南** +编写日期:2023年03月10日 + +### 1. 介绍 +Zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和HBase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 + +关于Zookeeper的更多信息请访问Zookeeper官网。 + +### 2. 环境要求 +#### 2.1 硬件要求 +| 硬件 | 说明 | +| ---------------- |---------------- | +|服务器|对服务器无要求| +|CPU|aarch64架构| +|磁盘分区|对磁盘分区无要求| +|网络|可访问外网| +#### 2.2 软件要求 +| 软件 | 说明 | +| ---------------- |---------------- | +|版本|openeuler 22.03| +|OS|5.10.0-60.65.0.90.oe2203.aarch64| +|GCC|10.3.1| +|OpenJDK|1.8.0_342| +|Maven|3.6.3| +|cmake|3.22.0| +|zookeeper|3.8.1| +### 3. 安装基础库 +#### 3.1 安装gcc maven jdk-1.8.0 + +yum -y install gcc.aarch64 gcc-c++.aarch64 gcc-gfortran.aarch64 libgcc.aarch64 maven java-1.8.0-openjdk.aarch64 java-1.8.0-openjdk-devel.aarch64 + +#### 3.2 安装依赖 +yum install -y wget vim openssl-devel zlib-devel autoconf automake libtool ant svn make libstdc++-static glibc-static git snappy snappy-devel fuse fuse-devel + +#### 3.3 配置maven +修改Maven配置文件中的:本地仓路径、远程仓等。 + +配置文件路径:“/etc/maven/settings.xml” + +说明: + +``` + +/path/to/local/repo + + + + huaweimaven + huawei maven + https://repo.huaweicloud.com/repository/maven/ + central + +``` +### 4 移植分析 +| 原始jar包 |so文件 | +| ---------------- |---------------- | +|jline-2.14.6.jar| libjansi.so| +``` +jline-2.14.6.jar aarch64下载地址:https://repo.huaweicloud.com/kunpeng/maven/jline/jline/2.14.6/jline-2.14.6.jar +将下载的jline-2.14.6.jar包放入“maven本地仓库下jline/jline/2.14.6/”下。 +``` +### 5 编译Zookeeper +#### 5.1 从官网上下载Zookeeper-release-3.8.1源码并解压。 +``` +wget https://codeload.github.com/apache/zookeeper/tar.gz/refs/tags/release-3.8.1 +tar -zxf release-3.8.1.tar.gz +``` +#### 5.2 进入解压后目录并安装编译。 +``` +cd zookeeper-release-3.8.1 +mvn clean package -Dmaven.test.skip=true +``` +#### 5.3 zookeeper-3.8.1.tar.gz包路径 +编译成功后将在源码目录下“zookeeper-assembly/target”生成zookeeper-3.8.1.tar.gz包。 +#### 5.4 使用鲲鹏分析扫描工具扫描编译生成的tar包,或者使用find.so脚本查找,确保没有包含有x86的so和jar包。 +如果有,则参考4,将jar包替换本地仓库,并重新编译zookeeper。 diff --git "a/Docs/\351\203\250\347\275\262\346\214\207\345\215\227/README.md" "b/Docs/\351\203\250\347\275\262\346\214\207\345\215\227/README.md" new file mode 100644 index 0000000000000000000000000000000000000000..ee35513c0009394255ff8dcb97ec666b40ced070 --- /dev/null +++ "b/Docs/\351\203\250\347\275\262\346\214\207\345\215\227/README.md" @@ -0,0 +1,15 @@ +# Bigdata DOCS 部署指南说明 + +此处存放Bigdata部署相关资料供开发者、用户参考 + +## 目录说明 +- **1-部署指南**:存放bigdata组件部署指南,如hadoop部署指南等类 + - [hadoop部署指南](hadoop.md) + - [hive部署指南](hive.md) + - [hbase部署指南](hbase.md) + - [spark部署指南](spark.md) + - [flink部署指南](flink.md) + - [zookeeper移植指南](zookeeper.md) + +## 说明 +开发者在提交文档之后,请更新此文件,刷新相关目录章节 diff --git "a/Docs/\351\203\250\347\275\262\346\214\207\345\215\227/flink.md" "b/Docs/\351\203\250\347\275\262\346\214\207\345\215\227/flink.md" new file mode 100644 index 0000000000000000000000000000000000000000..9f3f8b30ef1e030de6898d8baaa4d3c0d1583a2d --- /dev/null +++ "b/Docs/\351\203\250\347\275\262\346\214\207\345\215\227/flink.md" @@ -0,0 +1,163 @@ +### Flink-1.13.0部署指南 +编写日期 2023.3.13 +#### 1- 环境要求 +##### 1.1 建议版本 +| 软件 | 说明 | 获取方法 | +| ---------------- |---------------- |---------------- | +|OpenJDK|1.8.0_342|yum安装或者官网获取| +|flink|1.13.0|官网获取,aarch64版本需移植,参考[flink移植指南](https://gitee.com/macchen1/bigdata/blob/change-bigdat/Docs/%E7%A7%BB%E6%A4%8D%E6%8C%87%E5%8D%97/flink.md) +|hadoop|3.3.4|官网获取,aarch64版本需移植,参考[hadoop移植指南](https://gitee.com/macchen1/bigdata/blob/change-bigdat/Docs/%E7%A7%BB%E6%A4%8D%E6%8C%87%E5%8D%97/hadoop.md)| +|zookeeper|3.8.1|官网获取,aarch64版本需移植,参考[zookeeper移植指南](https://gitee.com/macchen1/bigdata/blob/change-bigdat/Docs/%E7%A7%BB%E6%A4%8D%E6%8C%87%E5%8D%97/zookeeper.md)| +##### 1.2硬件要求 +``` +最低配置:任意CPU、一根内存(大小不限)、一块硬盘(大小不限)。 +具体配置视实际应用场景而定。 +操作系统要求: 适用于CentOS 7.4~7.6、openeuler-20.03、openEuler-22.03操作系统。 +说明 +本文以openeuler 22.03为例,介绍flink部署。 +``` +##### 1.3 集群环境规划 +本章节规划以四台机器分别作为集群的节点1、节点2、节点3、节点4。各个节点数据 +| 机器名称 | IP地址 | 硬盘数 | OS & JDK| +| ---------------- |---------------- |---------------- |---------------- | +|server1|IPaddress1|系统盘:1 * 4TB 数据盘:12 * 4TB HDD|openeuler-22.03 & OpenJDK-1.8.0_342| +|agent1|IPaddress2|系统盘:1 * 4TB 数据盘:12 * 4TB HDD|openeuler-22.03 & OpenJDK-1.8.0_342| +|agent2|IPaddress3|系统盘:1 * 4TB 数据盘:12 * 4TB HDD|openeuler-22.03 & OpenJDK-1.8.0_342| +|agent3|IPaddress4|系统盘:1 * 4TB 数据盘:12 * 4TB HDD|openeuler-22.03 & OpenJDK-1.8.0_342| +##### 1.4 软件规划 +| 机器名称 | 服务名称 | +| ---------------- |---------------- | +|server1|StandaloneSessionClusterEntrypoint、(Namenode、ResourceManager)| +|agent1|TaskManagerRunner、(DataNode、NodeManager、JournalNode)| +|agent2|TaskManagerRunner、(DataNode、NodeManager、JournalNode)| +|agent3|TaskManagerRunner、(DataNode、NodeManager、JournalNode)| +#### 2- 配置部署环境 +``` +步骤1 依次登录节点1-4,将节点的主机名分别修改为server1、agent1、agent2、agent3。 +hostnamectl set-hostname 主机名 --static +步骤2 登录所有节点,修改“/etc/hosts”文件。 +在hosts文件中添加集群所有节点的“地址-主机名”映射关系。 +IPaddress1 server1 +IPaddress2 agent1 +IPaddress3 agent2 +IPaddress4 agent3 +步骤3 登录所有节点,关闭防火墙。 +systemctl stop firewalld.service +systemctl disable firewalld.service +systemctl status firewalld.service +步骤4 登录所有节点,配置SSH免密登录。 +1. 生成密钥,遇到提示时,按回车。 +ssh-keygen -t rsa +2. 在每台机器上配置SSH免密登录(包括配置自身节点的免密)。 +ssh-copy-id -i ~/.ssh/id_rsa.pub root@节点IP +步骤5 登录所有节点,安装OpenJDK,可使用指定版本jdk。 +yum install -y java-1.8.0 +java -version +``` +#### 3-flink部署 +Flink的部署有3种模式,分别是local模式、Standalone模式、yarn模式。其中local就是单机模式,一般来说用于本地开发测试;Standalone跟yarn模式都可以支撑集群部署、实现HA,但是两者在任务分配机制、内存管理等内容上有比较大的差异。一般在处理计算数据量级非常大的生产环境,使用flink on yarn的模式更多一些。 + +下载flink。 官网获取 或者 aarch64版本需移植,参考[flink移植指南](https://gitee.com/macchen1/bigdata/blob/change-bigdat/Docs/%E7%A7%BB%E6%A4%8D%E6%8C%87%E5%8D%97/flink.md)。 +##### 3.1 本地模式 +解压并直接执行 ./bin/start-cluster.sh 即可启动flink服务。 +##### 3.2 Standalone模式 +``` +步骤1 将flink-1.13.0-bin.tar.gz放置于server1节点的“/usr/local”目录,并解压。 +mv flink-1.13.0-bin.tar.gz /usr/local +tar -zxvf flink-1.13.0-bin.tar.gz +步骤2 建立软链接,便于后期版本更换。 +ln -s flink-1.13.0 flink +``` +###### 3.2.1 添加 flink 到环境变量 +``` +步骤1 编辑“/etc/profile”文件。 +vim /etc/profile +步骤2 在文件底部添加环境变量,如下所示。 +export FLINK=HOME=/usr/local/flink +export PATH=$FLINK_HOME/bin:$PATH +步骤3 使环境变量生效。 +source /etc/profile +说明 +flink所有的配置文件都在“FLINK_HOME/conf”目录下,修改以下配置文件前,切换到 +“FLINK_HOME/conf”目录。 +cd $FLINK_HOME/conf +``` +###### 3.2.2配置flink conf文件 +配置flink-conf.yaml +``` +vim flink-conf.yaml +jobmanager.rpc.address: server1 +注: +如需配置flink的历史任务地址则需要配置hadoop,配以下参数: +# 指定由JobManager归档的作业信息所存放的目录,这里使用的是HDFS +jobmanager.archive.fs.dir: hdfs://server1:9000/completed-jobs/ +# 指定History Server扫描哪些归档目录,多个目录使用逗号分隔 +historyserver.archive.fs.dir: hdfs://server1:9000/completed-jobs/ +# 指定History Server间隔多少毫秒扫描一次归档目录 +historyserver.archive.fs.refresh-interval: 10000 +# History Server所绑定的ip,0.0.0.0代表允许所有ip访问 +historyserver.web.address: 0.0.0.0 +# 指定History Server所监听的端口号 +historyserver.web.port: 8082 +内存配置用户自定义,略 +``` +配置 master +``` +vim masters +修改为server1的地址 +``` +配置 work +``` +vim workers +agent1 +agent2 +agent3 +``` +##### 3.2.3 同步配置到其它节点 +``` +步骤1 拷贝hbase-2.5.0到agent1、agent2、agent3节点的“/usr/local”目录。 +scp -r /usr/local/flink-1.13.0 root@agent1:/usr/local +scp -r /usr/local/flink-1.13.0 root@agent2:/usr/local +scp -r /usr/local/flink-1.13.0 root@agent3:/usr/local +步骤2 分别登录到agent1、agent2、agent3节点,为flink-1.13.0 建立软链接。 +cd /usr/local +ln -s flink-1.13.0 flink +``` +###### 3.2.4 启动flink +./start-cluster.sh +###### 3.2.5 查看flink +可通过master所在机器地址查看运行状态:server1:8081 +##### 3.3 flink on yarn +配置hadoop。再参考flink Standalone + +##### 3.4 flink 绑核 +``` +vim bin/taskmanager.sh +注释如下信息: +60 #if [[ $STARTSTOP == "start-foreground" ]]; then + 61 # exec "${FLINK_BIN_DIR}"/flink-console.sh $ENTRYPOINT "${ARGS[@]}" + 62 #else + 63 # if [[ $FLINK_TM_COMPUTE_NUMA == "false" ]]; then + 64 # # Start a single TaskManager + 65 # "${FLINK_BIN_DIR}"/flink-daemon.sh $STARTSTOP $ENTRYPOINT "${ARGS[@]}" + 66 # else + 67 # Example output from `numactl --show` on an AWS c4.8xlarge: + 68 # policy: default + 69 # preferred node: current + 70 # physcpubind: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2 9 30 31 32 33 34 35 + 71 # cpubind: 0 1 + 72 # nodebind: 0 1 + 73 # membind: 0 1 + 74 read -ra NODE_LIST <<< $(numactl --show | grep "^nodebind: ") + 75 for NODE_ID in "${NODE_LIST[@]:1}"; do + 76 # Start a TaskManager for each NUMA node + 77 numactl --membind=$NODE_ID --cpunodebind=$NODE_ID -- "${FLINK_BIN_DIR}"/flink-daemon.sh $ STARTSTOP $ENTRYPOINT "${ARGS[@]}" + 78 done + 79 # fi + 80 #fi + +查看是否生效 +jps +taskset –pc 进程号 +可查看到TaskManagerRunner 在哪几个cpu上运行。 +``` diff --git "a/Docs/\351\203\250\347\275\262\346\214\207\345\215\227/hadoop.md" "b/Docs/\351\203\250\347\275\262\346\214\207\345\215\227/hadoop.md" new file mode 100644 index 0000000000000000000000000000000000000000..691c41190fd3182b024a707a2b9dd86719ed621b --- /dev/null +++ "b/Docs/\351\203\250\347\275\262\346\214\207\345\215\227/hadoop.md" @@ -0,0 +1,472 @@ +### hadoop-3.3.4部署指南 +编写日期 2023.3.13 +#### 1- 环境要求 +##### 1.1 建议版本 +| 软件 | 说明 | 获取方法 | +| ---------------- |---------------- |---------------- | +|OpenJDK|1.8.0_342|yum安装或者官网获取| +|hadoop|3.3.4|官网获取,aarch64版本需移植,参考[hadoop移植指南](https://gitee.com/macchen1/bigdata/blob/change-bigdat/Docs/%E7%A7%BB%E6%A4%8D%E6%8C%87%E5%8D%97/hadoop.md)| +|zookeeper|3.8.1|官网获取,aarch64版本需移植,参考[zookeeper移植指南](https://gitee.com/macchen1/bigdata/blob/change-bigdat/Docs/%E7%A7%BB%E6%A4%8D%E6%8C%87%E5%8D%97/zookeeper.md)| +##### 1.2硬件要求 +``` +最低配置:任意CPU、一根内存(大小不限)、一块硬盘(大小不限)。 +具体配置视实际应用场景而定。 +操作系统要求: 适用于CentOS 7.4~7.6、openeuler-20.03、openEuler-22.03操作系统。 +说明 +本文以openeuler 22.03为例,介绍Hadoop(1+3)集群部署。 +``` +##### 1.3 集群环境规划 +本章节规划以四台机器分别作为集群的节点1、节点2、节点3、节点4。各个节点数据 +| 机器名称 | IP地址 | 硬盘数 | OS & JDK| +| ---------------- |---------------- |---------------- |---------------- | +|server1|IPaddress1|系统盘:1 * 4TB 数据盘:12 * 4TB HDD|openeuler-22.03 & OpenJDK-1.8.0_342| +|agent1|IPaddress2|系统盘:1 * 4TB 数据盘:12 * 4TB HDD|openeuler-22.03 & OpenJDK-1.8.0_342| +|agent2|IPaddress3|系统盘:1 * 4TB 数据盘:12 * 4TB HDD|openeuler-22.03 & OpenJDK-1.8.0_342| +|agent3|IPaddress4|系统盘:1 * 4TB 数据盘:12 * 4TB HDD|openeuler-22.03 & OpenJDK-1.8.0_342| +##### 1.4 软件规划 +| 机器名称 | 服务名称 | +| ---------------- |---------------- | +|server1|Namenode、ResourceManager| +|agent1|QuorumPeerMain、DataNode、NodeManager、JournalNode| +|agent2|QuorumPeerMain、DataNode、NodeManager、JournalNode| +|agent3|QuorumPeerMain、DataNode、NodeManager、JournalNode| +#### 2- 配置部署环境 +``` +步骤1 依次登录节点1-4,将节点的主机名分别修改为server1、agent1、agent2、agent3。 +hostnamectl set-hostname 主机名 --static +步骤2 登录所有节点,修改“/etc/hosts”文件。 +在hosts文件中添加集群所有节点的“地址-主机名”映射关系。 +IPaddress1 server1 +IPaddress2 agent1 +IPaddress3 agent2 +IPaddress4 agent3 +步骤3 登录所有节点,关闭防火墙。 +systemctl stop firewalld.service +systemctl disable firewalld.service +systemctl status firewalld.service +步骤4 登录所有节点,配置SSH免密登录。 +1. 生成密钥,遇到提示时,按回车。 +ssh-keygen -t rsa +2. 在每台机器上配置SSH免密登录(包括配置自身节点的免密)。 +ssh-copy-id -i ~/.ssh/id_rsa.pub root@节点IP +步骤5 登录所有节点,安装OpenJDK,可使用指定版本jdk。 +yum install -y java-1.8.0 +java -version +``` +#### 3-部署 ZooKeeper +##### 3.1 编译并解压 ZooKeeper +步骤1 参考ZooKeeper移植指南“[zookeeper移植指南](https://gitee.com/macchen1/bigdata/blob/change-bigdat/Docs/%E7%A7%BB%E6%A4%8D%E6%8C%87%E5%8D%97/zookeeper.md)”编译出“zookeeper-3.8.1.tar.gz”部署包。 +``` +步骤2 将zookeeper-3.8.1.tar.gz放置于agent1节点的“/usr/local”目录下,并解压。 +mv zookeeper-3.8.1.tar.gz /usr/local +cd /usr/local +tar -zxvf zookeeper-3.8.1.tar.gz +步骤3 建立软链接,便于后期版本更换。 +ln -s zookeeper-3.8.1 zookeeper +``` +##### 3.2 添加 ZooKeeper 到环境变量 +``` +步骤1 打开配置文件。 +vim /etc/profile +步骤2 添加ZooKeeper到环境变量。 +export ZOOKEEPER_HOME=/usr/local/zookeeper +export PATH=$ZOOKEEPER_HOME/bin:$PATH +步骤3 使环境变量生效。 +source /etc/profile +``` +##### 3.3 修改 ZooKeeper 配置文件 +``` +步骤1 进入ZooKeeper所在目录。 +cd /usr/local/zookeeper/conf +步骤2 拷贝配置文件。 +cp zoo_sample.cfg zoo.cfg +步骤3 修改配置文件。 +vim zoo.cfg +1. 修改数据目录。 +dataDir=/usr/local/zookeeper/tmp +2. 在最后添加如下代码,其中server.1-3是部署ZooKeeper的节点。 +server.1=agent1:2888:3888 +server.2=agent2:2888:3888 +server.3=agent3:2888:3888 +4 创建tmp目录作数据目录。 +mkdir /usr/local/zookeeper/tmp +步骤5 在tmp目录中创建一个空文件,并向该文件写入ID。 +touch /usr/local/zookeeper/tmp/myid +echo 1 > /usr/local/zookeeper/tmp/myid +``` +##### 3.4 同步配置到其它节点 +``` +步骤1 将配置好的ZooKeeper拷贝到其它节点。 +scp -r /usr/local/zookeeper-3.4.6 root@agent2:/usr/local +scp -r /usr/local/zookeeper-3.4.6 root@agent3:/usr/local +步骤2 登录agent2、agent3,创建软链接并修改myid内容。 +● agent2: +cd /usr/local +ln -s zookeeper-3.8.1 zookeeper +echo 2 > /usr/local/zookeeper/tmp/myid +● agent3: +cd /usr/local +ln -s zookeeper-3.8.1 zookeeper +echo 3 > /usr/local/zookeeper/tmp/myid +``` +##### 3.5 运行验证 +``` +步骤1 分别在agent1,agent2,agent3上启动ZooKeeper。 +cd /usr/local/zookeeper/bin +./zkServer.sh start +说明 +您可以分别在agent1,agent2,agent3上停止ZooKeeper。 +cd /usr/local/zookeeper/bin +./zkServer.sh stop +步骤2 查看ZooKeeper状态。 +./zkServer.sh status +``` +#### 4-部署Hadoop +##### 4.1 编译并解压 Hadoop +``` +步骤1 参考Hadoop 3.3.4 移植指南 编译出Hadoop软件部署包 “hadoop-3.3.4.tar.gz”。 +步骤2 将“hadoop-3.3.4.tar.gz”放置于server1节点的“/usr/local”目录,并解压。 +mv hadoop-3.3.4.tar.gz /usr/local +cd /usr/local +tar -zxvf hadoop-3.3.4.tar.gz +步骤3 建立软链接,便于后期版本更换。 +ln -s hadoop-3.3.4 hadoop +``` +##### 4.2 添加 Hadoop 到环境变量 +``` +步骤1 编辑/etc/profile文件。 +vim /etc/profile +步骤2 在文件底部添加环境变量,如下所示。 +export HADOOP_HOME=/usr/local/hadoop +export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH +步骤3 使环境变量生效。 +``` +##### 4.3 修改 Hadoop 配置文件 +``` +说明 +Hadoop所有的配置文件都在“$HADOOP_HOME/etc/hadoop”目录下,修改以下配置文件 +前,需要切换到“HADOOP_HOME/etc/hadoop”目录。 +cd $HADOOP_HOME/etc/hadoop +``` +修改 hadoop-env.sh +``` +修改环境变量JAVA_HOME为绝对路径,并将用户指定为root。(为jdk安装的路径) +echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.352.b08-3.oe2203sp1.aarch64/jre/" >> hadoop-env.sh +echo "export HDFS_NAMENODE_USER=root" >> hadoop-env.sh +echo "export HDFS_SECONDARYNAMENODE_USER=root" >> hadoop-env.sh +echo "export HDFS_DATANODE_USER=root" >> hadoop-env.sh +``` +修改 yarn-env.sh +``` +修改用户为root。 +echo "export YARN_REGISTRYDNS_SECURE_USER=root" >> yarn-env.sh +echo "export YARN_RESOURCEMANAGER_USER=root" >> yarn-env.sh +echo "export YARN_NODEMANAGER_USER=root" >> yarn-env.sh +``` +修改 core-site.xml +``` +步骤1 编辑core-site.xml文件。 +vim core-site.xml +步骤2 添加或修改ÑnĒªñà†ì²Ñn标签范围内的参数。 + + fs.defaultFS + hdfs://server1:9000 + + + hadoop.tmp.dir + /home/hadoop_tmp_dir + + + ipc.client.connect.max.retries + 100 + + + ipc.client.connect.retry.interval + 10000 + + + hadoop.proxyuser.root.hosts + * + + + hadoop.proxyuser.root.groups + * + +``` +在节点server1上创建目录。 +mkdir /home/hadoop_tmp_dir +修改 hdfs-site.xml +``` +步骤1 修改hdfs-site.xml文件。 +vim hdfs-site.xml +步骤2 添加或修改ÑnĒªñà†ì²Ñn标签范围内的参数。 + + dfs.replication + 1 + + + dfs.namenode.name.dir + /data/data1/hadoop/nn + + + dfs.datanode.data.dir + /data/data1/hadoop/dn,/data/data2/hadoop/dn,/data/data3/hadoop/dn,/data/data4/hadoop/dn,/ +data/data5/hadoop/dn,/data/data6/hadoop/dn,/data/data7/hadoop/dn,/data/data8/hadoop/dn,/data/data9/ +hadoop/dn,/data/data10/hadoop/dn,/data/data11/hadoop/dn,/data/data12/hadoop/dn + + + dfs.http.address + server1:50070 + + + dfs.namenode.http-bind-host + 0.0.0.0 + + + dfs.datanode.handler.count + 600 + + + dfs.namenode.handler.count + 600 + + + dfs.namenode.service.handler.count + 600 + + + ipc.server.handler.queue.size + 300 + + + dfs.webhdfs.enabled + true + +``` +``` +节点agent1、agent2、agent3分别创建dfs.datanode.data.dir对应目录。 +举例:mkdir -p /data/data{1,2,3,4,5,6,7,8,9,10,11,12}/hadoop +``` +修改 mapred-site.xml +``` +步骤1 编辑mapred-site.xml文件。 +vim mapred-site.xml +步骤2 添加或修改ÑnĒªñà†ì²Ñn标签范围内的参数。 + + mapreduce.framework.name + yarn + true + The runtime framework for executing MapReduce jobs + + + mapreduce.job.reduce.slowstart.completedmaps + 0.88 + + + mapreduce.application.classpath + + /usr/local/hadoop/etc/hadoop, + /usr/local/hadoop/share/hadoop/common/*, + /usr/local/hadoop/share/hadoop/common/lib/*, + /usr/local/hadoop/share/hadoop/hdfs/*, + /usr/local/hadoop/share/hadoop/hdfs/lib/*, + /usr/local/hadoop/share/hadoop/mapreduce/*, + /usr/local/hadoop/share/hadoop/mapreduce/lib/*, + /usr/local/hadoop/share/hadoop/yarn/*, + /usr/local/hadoop/share/hadoop/yarn/lib/* + + + + mapreduce.map.memory.mb + 6144 + + + mapreduce.reduce.memory.mb + 6144 + + + mapreduce.map.java.opts + -Xmx5530m + + + mapreduce.reduce.java.opts + -Xmx2765m + + + mapred.child.java.opts + -Xmx2048m -Xms2048m + + + mapred.reduce.parallel.copies + 20 + + + yarn.app.mapreduce.am.env + HADOOP_MAPRED_HOME=/usr/local/hadoop + + + mapreduce.map.env + HADOOP_MAPRED_HOME=/usr/local/hadoop + + + mapreduce.reduce.env + HADOOP_MAPRED_HOME=/usr/local/hadoop + +``` +修改 yarn-site.xml +``` +步骤1 编辑yarn-site.xml文件。 +vim yarn-site.xml +步骤2 添加或修改ÑnĒªñà†ì²Ñn标签范围内的参数。 + + yarn.nodemanager.aux-services + mapreduce_shuffle + true + + + yarn.nodemanager.aux-services + mapreduce_shuffle + + + yarn.resourcemanager.hostname + server1 + + + yarn.resourcemanager.bind-host + 0.0.0.0 + + + yarn.scheduler.maximum-allocation-mb + 65536 + + + yarn.nodemanager.resource.memory-mb + 102400 + + + yarn.nodemanager.resource.cpu-vcores + 48 + + + yarn.log-aggregation-enable + true + + + yarn.client.nodemanager-connect.max-wait-ms + 300000 + + + yarn.nodemanager.vmem-pmem-ratio + 7.1 + + + yarn.nodemanager.vmem-check-enabled + false + + + yarn.nodemanager.pmem-check-enabled + false + + + yarn.scheduler.minimum-allocation-mb + 3072 + + + yarn.app.mapreduce.am.resource.mb + 3072 + + + yarn.scheduler.maximum-allocation-vcores + 48 + + + yarn.application.classpath + + /usr/local/hadoop/etc/hadoop, + /usr/local/hadoop/share/hadoop/common/*, + /usr/local/hadoop/share/hadoop/common/lib/*, + /usr/local/hadoop/share/hadoop/hdfs/*, + /usr/local/hadoop/share/hadoop/hdfs/lib/*, + /usr/local/hadoop/share/hadoop/mapreduce/*, + /usr/local/hadoop/share/hadoop/mapreduce/lib/*, + /usr/local/hadoop/share/hadoop/yarn/*, + /usr/local/hadoop/share/hadoop/yarn/lib/* + + + + yarn.nodemanager.local-dirs /data/data1/hadoop/yarn/local,/data/data2/ +hadoop/yarn/local,/data/data3/hadoop/yarn/local,/data/data4/hadoop/yarn/local,/data/data5/hadoop/yarn/ +local,/data/data6/hadoop/yarn/local,/data/data7/hadoop/yarn/local,/data/data8/hadoop/yarn/local,/data/ +data9/hadoop/yarn/local,/data/data10/hadoop/yarn/local,/data/data11/hadoop/yarn/local,/data/data12/ +hadoop/yarn/local + + + yarn.nodemanager.log-dirs /data/data1/hadoop/yarn/log,/data/data2/ +hadoop/yarn/log,/data/data3/hadoop/yarn/log,/data/data4/hadoop/yarn/log,/data/data5/hadoop/yarn/log,/ +data/data6/hadoop/yarn/log,/data/data7/hadoop/yarn/log,/data/data8/hadoop/yarn/log,/data/data9/ +hadoop/yarn/log,/data/data10/hadoop/yarn/log,/data/data11/hadoop/yarn/log,/data/data12/hadoop/yarn/ +log + +``` +``` +节点agent1、agent2、agent3分别创建yarn.nodemanager.local-dirs对应目录。 +举例:mkdir -p /data/data{1,2,3,4,5,6,7,8,9,10,11,12}/hadoop/yarn +``` +修改 slaves 或 workers +``` +步骤1 确认Hadoop版本,3.x以下的版本编辑slaves文件,3.x及以上的编辑workers文件。 +步骤2 编辑文件(本文版本3.1.1)。 +vim workers +步骤3 修改workers文件,只保存所有agent节点的IP地址(可用主机名代替),其余内容均 +删除。 +agent1 +agent2 +agent3 +``` +##### 4.4 同步配置到其它节点 +``` +步骤1 所有节点依次创建journaldata目录。 +mkdir -p /usr/local/hadoop-3.3.4/journaldata +步骤2 拷贝hadoop-3.1.1到agent1、agent2、agent3节点的“/usr/local”目录。 +scp -r /usr/local/hadoop-3.3.4 root@agent1:/usr/local +scp -r /usr/local/hadoop-3.3.4 root@agent2:/usr/local +scp -r /usr/local/hadoop-3.3.4 root@agent3:/usr/local +步骤3 分别登录到agent1、agent2、agent3节点,为hadoop-3.3.4建立软链接。 +cd /usr/local +ln -s hadoop-3.3.4 hadoop +``` +##### 4.5启动 Hadoop 集群 +``` +步骤1 启动ZooKeeper集群。 +分别在agent1,agent2,agent3节点上启动ZooKeeper。 +cd /usr/local/zookeeper/bin +./zkServer.sh start +步骤2 启动JournalNode。 +分别在agent1,agent2,agent3节点上启动JournalNode。 +说明 +只在第一次进行格式化操作时,需要执行步骤2-步骤4,完成格式化后,下次启动集群,只需要 +执行步骤1、步骤5、步骤6。 +cd /usr/local/hadoop/sbin +./hadoop-daemon.sh start journalnode +步骤3 格式化HDFS。 +1. 在server1节点上格式化HDFS。 +hdfs namenode -format +2. 格式化后集群会根据core-site.xml配置的hadoop.tmp.dir参数生成目录。 +本文档配置目录为“/home/hadoop_tmp”。 +步骤4 格式化ZKFC。 +在server1节点上格式化ZKFC。 +hdfs zkfc -formatZK +步骤5 启动HDFS。 +在server1节点上启动HDFS。 +cd /usr/local/hadoop/sbin +./start-dfs.sh +步骤6 启动Yarn。 +在server1节点上启动Yarn。 +cd /usr/local/hadoop/sbin +./start-yarn.sh +步骤7 观察进程是否都正常启动。 +使用jps命令查看进程 +``` +##### 4.6 验证hadoop +在浏览器中输入URL地址,访问Hadoop Web页面,URL格式为“http:// +server1:50070”。 diff --git "a/Docs/\351\203\250\347\275\262\346\214\207\345\215\227/hbase.md" "b/Docs/\351\203\250\347\275\262\346\214\207\345\215\227/hbase.md" new file mode 100644 index 0000000000000000000000000000000000000000..666122ddf89eb86441df0e8f53a1bd276e351f3a --- /dev/null +++ "b/Docs/\351\203\250\347\275\262\346\214\207\345\215\227/hbase.md" @@ -0,0 +1,182 @@ +### Hbase-2.5.0 移植指南 +编写日期 2023.3.13 +#### 1- 环境要求 +##### 1.1 建议版本 +| 软件 | 说明 | 获取方法 | +| ---------------- |---------------- |---------------- | +|OpenJDK|1.8.0_342|yum安装或者官网获取| +|hadoop|3.3.4|官网获取,aarch64版本需移植,参考[hadoop移植指南](https://gitee.com/macchen1/bigdata/blob/change-bigdat/Docs/%E7%A7%BB%E6%A4%8D%E6%8C%87%E5%8D%97/hadoop.md)| +|zookeeper|3.8.1|官网获取,aarch64版本需移植,参考[zookeeper移植指南](https://gitee.com/macchen1/bigdata/blob/change-bigdat/Docs/%E7%A7%BB%E6%A4%8D%E6%8C%87%E5%8D%97/zookeeper.md)| +|hbase|2.5.0|官网获取,aarch64版本需移植,参考[hbase移植指南](https://gitee.com/macchen1/bigdata/blob/change-bigdat/Docs/%E7%A7%BB%E6%A4%8D%E6%8C%87%E5%8D%97/hbase.md)| +##### 1.2硬件要求 +``` +最低配置:任意CPU、一根内存(大小不限)、一块硬盘(大小不限)。 +具体配置视实际应用场景而定。 +操作系统要求: 适用于CentOS 7.4~7.6、openeuler-20.03、openEuler-22.03操作系统。 +说明 +本文以openeuler 22.03为例,介绍flink(1+3)集群部署。 +``` +##### 1.3 集群环境规划 +本章节规划以四台机器分别作为集群的节点1、节点2、节点3、节点4。各个节点数据 +| 机器名称 | IP地址 | 硬盘数 | OS & JDK| +| ---------------- |---------------- |---------------- |---------------- | +|server1|IPaddress1|系统盘:1 * 4TB 数据盘:12 * 4TB HDD|openeuler-22.03 & OpenJDK-1.8.0_342| +|agent1|IPaddress2|系统盘:1 * 4TB 数据盘:12 * 4TB HDD|openeuler-22.03 & OpenJDK-1.8.0_342| +|agent2|IPaddress3|系统盘:1 * 4TB 数据盘:12 * 4TB HDD|openeuler-22.03 & OpenJDK-1.8.0_342| +|agent3|IPaddress4|系统盘:1 * 4TB 数据盘:12 * 4TB HDD|openeuler-22.03 & OpenJDK-1.8.0_342| +##### 1.4 软件规划 +| 机器名称 | 服务名称 | +| ---------------- |---------------- | +|server1|Namenode、ResourceManager、Hmaster| +|agent1|QuorumPeerMain、DataNode、NodeManager、JournalNode、HRegionServer| +|agent2|QuorumPeerMain、DataNode、NodeManager、JournalNode、HRegionServer| +|agent3|QuorumPeerMain、DataNode、NodeManager、JournalNode、HRegionServer| +#### 2- 配置部署环境 +``` +步骤1 依次登录节点1-4,将节点的主机名分别修改为server1、agent1、agent2、agent3。 +hostnamectl set-hostname 主机名 --static +步骤2 登录所有节点,修改“/etc/hosts”文件。 +在hosts文件中添加集群所有节点的“地址-主机名”映射关系。 +IPaddress1 server1 +IPaddress2 agent1 +IPaddress3 agent2 +IPaddress4 agent3 +步骤3 登录所有节点,关闭防火墙。 +systemctl stop firewalld.service +systemctl disable firewalld.service +systemctl status firewalld.service +步骤4 登录所有节点,配置SSH免密登录。 +1. 生成密钥,遇到提示时,按回车。 +ssh-keygen -t rsa +2. 在每台机器上配置SSH免密登录(包括配置自身节点的免密)。 +ssh-copy-id -i ~/.ssh/id_rsa.pub root@节点IP +步骤5 登录所有节点,安装OpenJDK,可使用指定版本jdk。 +yum install -y java-1.8.0 +java -version +``` +#### 3-部署zookeeper +参考 [hadoop部署指南](https://gitee.com/macchen1/bigdata/blob/change-bigdat/Docs/%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97/hadoop.md) +#### 4-部署hadoop +参考 [hadoop部署指南](https://gitee.com/macchen1/bigdata/blob/change-bigdat/Docs/%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97/hadoop.md) +#### 5-部署hbase +##### 5.1 下载并解压 HBase +步骤1 下载HBase。 +官网获取 或者 aarch64版本需移植,参考[hbase移植指南](https://gitee.com/macchen1/bigdata/blob/change-bigdat/Docs/%E7%A7%BB%E6%A4%8D%E6%8C%87%E5%8D%97/hbase.md)| +``` +步骤2 将hbase-2.5.0-bin.tar.gz放置于server1节点的“/usr/local”目录,并解压。 +mv hbase-2.5.0-bin.tar.gz /usr/local +tar -zxvf hbase-2.5.0-bin.tar.gz +步骤3 建立软链接,便于后期版本更换。 +ln -s hbase-2.5.0 hbase +``` +##### 5.2 添加 HBase 到环境变量 +``` +步骤1 编辑“/etc/profile”文件。 +vim /etc/profile +步骤2 在文件底部添加环境变量,如下所示。 +export HBASE_HOME=/usr/local/hbase +export PATH=$HBASE_HOME/bin:$HBASE_HOME/sbin:$PATH +步骤3 使环境变量生效。 +source /etc/profile +``` +##### 5.3 修改 HBase 配置文件 +``` +说明 +HBase所有的配置文件都在“HBASE_HOME/conf”目录下,修改以下配置文件前,切换到 +“HBASE_HOME/conf”目录。 +cd $HBASE_HOME/conf +``` +修改 hbase-env.sh +``` +步骤1 编辑hbase-env.sh文件。 +vim hbase-env.sh +步骤2 修改环境变量JAVA_HOME为绝对路径,HBASE_MANAGES_ZK设为false。 +export JAVA_HOME=/usr/local/jdk8u252-b09 +export HBASE_MANAGES_ZK=false +export HBASE_LIBRARY_PATH=/usr/local/hadoop/lib/native +``` +修改 hbase-site.xml +``` +步骤1 修改hbase-site.xml文件。 +vim hbase-site.xml +步骤2 添加或修改ÑnĒªñà†ì²Ñn标签范围内的部分参数。 + + + hbase.rootdir + hdfs://server1:9000/HBase + + + hbase.tmp.dir + /usr/local/hbase/tmp + + + hbase.cluster.distributed + true + + + hbase.unsafe.stream.capability.enforce + false + + + hbase.zookeeper.quorum + agent1:2181,agent2:2181,agent3:2181 + + + hbase.unsafe.stream.capability.enforce + false + + +``` +修改 regionservers +``` +步骤1 编辑regionservers文件。 +vim regionservers +步骤2 将regionservers文件内容替换为agent节点IP(可用主机名代替)。 +agent1 +agent2 +agent3 +``` +拷贝 hdfs-site.xml +``` +拷贝hadoop目录下的的的hdfs-site.xml文件到“hbase/conf/”目录,可选择软链接或 +拷贝。 +cp /usr/local/hadoop/etc/hadoop/hdfs-site.xml /usr/local/hbase/conf/hdfs-site.xml +``` +##### 5.4 同步配置到其它节点 +``` +步骤1 拷贝hbase-2.5.0到agent1、agent2、agent3节点的“/usr/local”目录。 +scp -r /usr/local/hbase-2.5.0 root@agent1:/usr/local +scp -r /usr/local/hbase-2.5.0 root@agent2:/usr/local +scp -r /usr/local/hbase-2.5.0 root@agent3:/usr/local +步骤2 分别登录到agent1、agent2、agent3节点,为hbase-2.5.0建立软链接。 +cd /usr/local +ln -s hbase-2.5.0 hbase +``` +##### 5.5 启动 HBase 集群 +``` +步骤1 依次启动ZooKeeper和Hadoop。 +步骤2 在server1节点上启动HBase集群。 +/usr/local/hbase/bin/start-hbase.sh +步骤3 观察进程是否都正常启动。 +jps +server1: +ResourceManager +NameNode +HMaster +agent1: +NodeManager +DataNode +HRegionServer +JournalNode +QuorumPeerMain +``` +##### 5.6 停止 HBase 集群(可选) +在server1节点上停止HBase集群。 +/usr/local/hbase/bin/stop-hbase.sh +##### 5.7 验证 HBase +打开浏览器,可通过URL地址,访问HBase Web页面,URL格式为“http:// +server1:16010”。其中,“server1”填写HMaster进程所在节点的IP地址, +“16010”是HBase 1.0以后版本的默认端口,可通过修改“hbase-site.xml”文件的 +“hbase.master.info.port”参数进行设置。 +通过观察Region Servers数量是否与agent数目相等(本文是3个agent)判断集群是否 +正常启动。 diff --git "a/Docs/\351\203\250\347\275\262\346\214\207\345\215\227/hive.md" "b/Docs/\351\203\250\347\275\262\346\214\207\345\215\227/hive.md" new file mode 100644 index 0000000000000000000000000000000000000000..ca4db21c67e9d9fb54c358c7ed669dd239b1f577 --- /dev/null +++ "b/Docs/\351\203\250\347\275\262\346\214\207\345\215\227/hive.md" @@ -0,0 +1,203 @@ +### hive-3.1.3部署指南 +编写日期 2023.3.13 +#### 1- 环境要求 +##### 1.1 建议版本 +| 软件 | 说明 | 获取方法 | +| ---------------- |---------------- |---------------- | +|OpenJDK|1.8.0_342|yum安装或者官网获取| +|hadoop|3.3.4|官网获取,aarch64版本需移植,参考[hadoop移植指南](https://gitee.com/macchen1/bigdata/blob/change-bigdat/Docs/%E7%A7%BB%E6%A4%8D%E6%8C%87%E5%8D%97/hadoop.md)| +|hive|3.1.3|官网获取,aarch64版本需移植,参考[hive移植指南](https://gitee.com/macchen1/bigdata/blob/change-bigdat/Docs/%E7%A7%BB%E6%A4%8D%E6%8C%87%E5%8D%97/hive.md)| +##### 1.2硬件要求 +``` +最低配置:任意CPU、一根内存(大小不限)、一块硬盘(大小不限)。 +具体配置视实际应用场景而定。 +操作系统要求: 适用于CentOS 7.4~7.6、openeuler-20.03、openEuler-22.03操作系统。 +说明 +本文以openeuler 22.03为例,介绍Hadoop(1+3)集群部署。 +``` +##### 1.3 集群环境规划 +本章节规划以四台机器分别作为集群的节点1、节点2、节点3、节点4。各个节点数据 +| 机器名称 | IP地址 | 硬盘数 | OS & JDK| +| ---------------- |---------------- |---------------- |---------------- | +|server1|IPaddress1|系统盘:1 * 4TB 数据盘:12 * 4TB HDD|openeuler-22.03 & OpenJDK-1.8.0_342| +|agent1|IPaddress2|系统盘:1 * 4TB 数据盘:12 * 4TB HDD|openeuler-22.03 & OpenJDK-1.8.0_342| +|agent2|IPaddress3|系统盘:1 * 4TB 数据盘:12 * 4TB HDD|openeuler-22.03 & OpenJDK-1.8.0_342| +|agent3|IPaddress4|系统盘:1 * 4TB 数据盘:12 * 4TB HDD|openeuler-22.03 & OpenJDK-1.8.0_342| +##### 1.4 软件规划 +| 机器名称 | 服务名称 | +| ---------------- |---------------- | +|server1|Namenode、ResourceManager、RunJar、RunJar| +|agent1|DataNode、NodeManager、JournalNode| +|agent2|DataNode、NodeManager、JournalNode| +|agent3|DataNode、NodeManager、JournalNode| +#### 2- 配置部署环境 +``` +步骤1 依次登录节点1-4,将节点的主机名分别修改为server1、agent1、agent2、agent3。 +hostnamectl set-hostname 主机名 --static +步骤2 登录所有节点,修改“/etc/hosts”文件。 +在hosts文件中添加集群所有节点的“地址-主机名”映射关系。 +IPaddress1 server1 +IPaddress2 agent1 +IPaddress3 agent2 +IPaddress4 agent3 +步骤3 登录所有节点,关闭防火墙。 +systemctl stop firewalld.service +systemctl disable firewalld.service +systemctl status firewalld.service +步骤4 登录所有节点,配置SSH免密登录。 +1. 生成密钥,遇到提示时,按回车。 +ssh-keygen -t rsa +2. 在每台机器上配置SSH免密登录(包括配置自身节点的免密)。 +ssh-copy-id -i ~/.ssh/id_rsa.pub root@节点IP +步骤5 登录所有节点,安装OpenJDK,可使用指定版本jdk。 +yum install -y java-1.8.0 +java -version +``` +#### 3- 部署Hive +在部署Hive之前请先安装部署好Hadoop,参考[hadoop部署指南](https://gitee.com/macchen1/bigdata/blob/change-bigdat/Docs/%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97/hadoop.md) +##### 3.1 配置Hive环境变量(下面hive的路径已经提前做了软连接的操作) +``` +vim /etc/profile +#增加以下内容: +# HIVE_HOME +export HIVE_HOME=/usr/local/hive +export PATH=$PATH:$HIVE_HOME/bin + +#保存退出 source 使其生效 +source /etc/profile +``` +##### 3.2 配置Hive文件 +##### 3.2.1 配置hive-env.sh +``` +cd $HIVE_HOME/conf +cp hive-env.sh.template hive-env.sh + +vim hive-env.sh + +export JAVA_HOME= #修改为环境中jdk路径 +export HADOOP_HOME=/usr/local/hadoop #修改为环境中hadoop路径 +export HIVE_CONF_DIR=/usr/local/hive/conf #修改为环境中hive配置文件路径 +``` +##### 3.2.2 配置hive-site.xml +``` + + + + + javax.jdo.option.ConnectionURL + jdbc:mysql://server1:3306/hive?createDatabaseIfNotExist=true + + + + javax.jdo.option.ConnectionDriverName + org.mariadb.jdbc.Driver + + + + javax.jdo.option.ConnectionUserName + root + + + + javax.jdo.option.ConnectionPassword + root + + + + hive.exec.local.scratchdir + /tmp/hive + + + + hive.exec.scratchdir + /tmp/hive + + + + hive.downloaded.resources.dir + /tmp/${hive.session.id}_resources + + + + hive.querylog.location + /tmp/hive + + + + hive.server2.logging.operation.log.location + /tmp/hive/operation_logs + + + + hive.metastore.client.connect.retry.delay + 1s + + + + hive.metastore.client.socket.timeout + 600s + + + + hive.metastore.uris + + + + + hive.server2.enable.doAs + true + + + + hive.server2.thrift.http.port + 10001 + + + + hive.server2.thrift.port + 10000 + + + + hive.server2.transport.mode + binary + + + + hive.metastore.warehouse.dir + /user/hive/warehouse + + +``` +##### 3.2.3 安装mariadb并配置hive元数据库 +``` +openEuler系统直接通过yum命令安装 +yum install -y mariadb* + +启动mysql服务 +systemctl start mariadb + +进入mysql :mysql -uroot -p + +create database hive + +set password for 'root'@'localhost'=password('root'); +grant all privileges on *.* to root@'%' identified by 'root' with grant option; +让设置立即生效 +flush privileges; + +``` +##### 3.2.4 初始化数据库 +schematool -initSchema -dbType mysql +##### 3.3 启动Hive +``` +启动hadoop集群:statr-all.sh +启动mysql服务:service mysqld start +在安装了hive的机器上输入hive + +简单查看数据库:Show databases; +hive创建数据库:create database bigdata; +show database; +``` + + diff --git "a/Docs/\351\203\250\347\275\262\346\214\207\345\215\227/spark.md" "b/Docs/\351\203\250\347\275\262\346\214\207\345\215\227/spark.md" new file mode 100644 index 0000000000000000000000000000000000000000..b625ab8fd3ac5e2e613425388d835e6218c06c95 --- /dev/null +++ "b/Docs/\351\203\250\347\275\262\346\214\207\345\215\227/spark.md" @@ -0,0 +1,132 @@ +### spark-3.3.0部署指南 +编写日期 2023.3.14 +#### 1- 环境要求 +##### 1.1 建议版本 +| 软件 | 说明 | 获取方法 | +| ---------------- |---------------- |---------------- | +|OpenJDK|1.8.0_342|yum安装或者官网获取| +|hadoop|3.3.4|官网获取,aarch64版本需移植,参考[hadoop移植指南](https://gitee.com/macchen1/bigdata/blob/change-bigdat/Docs/%E7%A7%BB%E6%A4%8D%E6%8C%87%E5%8D%97/hadoop.md)| +|spark|3.3.0|官网获取,aarch64版本需移植,参考[spark移植指南](https://gitee.com/macchen1/bigdata/blob/change-bigdat/Docs/%E7%A7%BB%E6%A4%8D%E6%8C%87%E5%8D%97/spark.md)| +##### 1.2硬件要求 +``` +最低配置:任意CPU、一根内存(大小不限)、一块硬盘(大小不限)。 +具体配置视实际应用场景而定。 +操作系统要求: 适用于CentOS 7.4~7.6、openeuler-20.03、openEuler-22.03操作系统。 +说明 +本文以openeuler 22.03为例,介绍Hadoop(1+3)集群部署。 +``` +##### 1.3 集群环境规划 +本章节规划以四台机器分别作为集群的节点1、节点2、节点3、节点4。各个节点数据 +| 机器名称 | IP地址 | 硬盘数 | OS & JDK| +| ---------------- |---------------- |---------------- |---------------- | +|server1|IPaddress1|系统盘:1 * 4TB 数据盘:12 * 4TB HDD|openeuler-22.03 & OpenJDK-1.8.0_342| +|agent1|IPaddress2|系统盘:1 * 4TB 数据盘:12 * 4TB HDD|openeuler-22.03 & OpenJDK-1.8.0_342| +|agent2|IPaddress3|系统盘:1 * 4TB 数据盘:12 * 4TB HDD|openeuler-22.03 & OpenJDK-1.8.0_342| +|agent3|IPaddress4|系统盘:1 * 4TB 数据盘:12 * 4TB HDD|openeuler-22.03 & OpenJDK-1.8.0_342| +##### 1.4 软件规划 +| 机器名称 | 服务名称 | +| ---------------- |---------------- | +|server1|Namenode、ResourceManager、RunJar、RunJar| +|agent1|DataNode、NodeManager、JournalNode| +|agent2|DataNode、NodeManager、JournalNode| +|agent3|DataNode、NodeManager、JournalNode| +#### 2- 配置部署环境 +``` +步骤1 依次登录节点1-4,将节点的主机名分别修改为server1、agent1、agent2、agent3。 +hostnamectl set-hostname 主机名 --static +步骤2 登录所有节点,修改“/etc/hosts”文件。 +在hosts文件中添加集群所有节点的“地址-主机名”映射关系。 +IPaddress1 server1 +IPaddress2 agent1 +IPaddress3 agent2 +IPaddress4 agent3 +步骤3 登录所有节点,关闭防火墙。 +systemctl stop firewalld.service +systemctl disable firewalld.service +systemctl status firewalld.service +步骤4 登录所有节点,配置SSH免密登录。 +1. 生成密钥,遇到提示时,按回车。 +ssh-keygen -t rsa +2. 在每台机器上配置SSH免密登录(包括配置自身节点的免密)。 +ssh-copy-id -i ~/.ssh/id_rsa.pub root@节点IP +步骤5 登录所有节点,安装OpenJDK,可使用指定版本jdk。 +yum install -y java-1.8.0 +java -version +``` +#### 3- 部署Spark +在部署Hive之前请先安装部署好Hadoop,参考[hadoop部署指南](https://gitee.com/macchen1/bigdata/blob/change-bigdat/Docs/%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97/hadoop.md) +##### 3.1 安装Scala +``` +wget https://downloads.lightbend.com/scala/2.12.15/scala-2.12.15.tgz +tar zxf scala-2.12.15.tgz -C /usr/local/ +ln -s /usr/local/scala /usr/local/scala-2.12.15 +``` +##### 3.2 配置Spark环境变量(下面Spark的路径已经提前做了软连接的操作) +``` +vim /etc/profile +#增加以下内容: +# SPARK_HOME +export SPARK_HOME=/usr/local/spark +export PATH=$PATH:$SPARK_HOME/bin +# SCALA_HOME +export SCALA_HOME=/usr/local/scala +export PATH=${SCALA_HOME}/bin:${PATH} + +#保存退出 source 使其生效 +source /etc/profile +``` +##### 3.3 配置Spark文件 +cd $SPARK_HOME/conf +###### 3.3.1 配置 spark-env.sh +``` +cp spark-env.sh.template spark-env.sh + +vim spark-env.sh + +export JAVA_HOME=/usr/local/jdk1.8.0_342 +export SCALA_HOME=/usr/local/scala +export HADOOP_HOME=/usr/local/hadoop +export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop +``` +###### 3.3.2 配置 spark-defaults.conf +``` +cp spark-defaults.conf.template spark-defaults.conf + +vim spark-defaults.conf + +park.eventLog.dir hdfs://server1:9000/spark_history +spark.eventLog.compress true +spark.eventLog.enabled true +spark.serializer org.apache.spark.serializer.KryoSerializer +spark.history.fs.logDirectory hdfs:///server1:9000/spark_history +spark.yarn.historyServer.address server1:18080 +spark.history.ui.port 18080 +spark.jobhistory.address http://server1:19888/history/logs +``` +###### 3.3.3 配置 log4j2.properties +``` +cp log4j2.properties.template log4j2.properties +``` +###### 3.3.4 配置 slaves +``` +vim slaves +server1 +agent1 +agent2 +agent3 +``` +###### 3.3.5 将hadoop配置文件core-site.xml,hdfs-site.xml拷贝倒spark/conf目录下 +``` +cp $HADOOP_HOME/etc/hadoop/core-site.xml $HADOOP_HOME/etc/hadoop/hdfs-site.xml $SPARK_HOME/conf +``` +###### 3.3.6 将hive配置文件hive-site.xml拷贝倒spark/conf目录下(配置hive on spark模式才进行) +``` +cp $HIVE_HOME/conf/hive-site.xml $SPARK_HOME/conf +``` +##### 3.4 启动Spark +``` +sh $SPARK_HOME/sbin/start-all.sh +sh $SPARK_HOME/sbin/start-history-server.sh +# sh $SPARK_HOME/sbin/start-thriftserver.sh --driver-class-path $SPARK_HOME/jars/${jdbc驱动名称} + +``` diff --git "a/Docs/\351\203\250\347\275\262\346\214\207\345\215\227/zookeeper.md" "b/Docs/\351\203\250\347\275\262\346\214\207\345\215\227/zookeeper.md" new file mode 100644 index 0000000000000000000000000000000000000000..fc525e58fefcbe9216c1161537f65c6917a00a8f --- /dev/null +++ "b/Docs/\351\203\250\347\275\262\346\214\207\345\215\227/zookeeper.md" @@ -0,0 +1,3 @@ +### zookeeper-3.8.1部署指南 + +详情参考hadoop部署指南 [hadoop部署指南](https://gitee.com/macchen1/bigdata/blob/change-bigdat/Docs/%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97/hadoop.md) \ No newline at end of file diff --git a/README.md b/README.md index 9500aae1294ba9ffed31838367527d986811a787..c0e4d5648f7c4d41ec94f46d3b4abbab5b38bb8e 100644 --- a/README.md +++ b/README.md @@ -1,106 +1,112 @@ -# bigdata +# bigdata +[ _English version introduction_ ](readme-English.md) -## 概述 -数据已经成为土地、劳动力、资本、技术之后的第五生产要素。在这种情况下,openEuler社区需要从技术角度考虑如何更充分的发挥数据在生产、生活中的作用,要构建大数据处理相关能力,由本SIG负责。 -## sig-BigData愿景 +## 愿景和职责 构建和完善openEuler社区下的大数据生态,打造活跃的大数据交流平台,丰富和提升大数据组件功能和性能, 发掘用户大数据需求,孵化有潜力的大数据组件。 - -## 该SIG的业务范围 - - openEuler上的大数据基础运行能力,包括数据采集、数据传输、数据存储、数据分析、数据可视等。 - - openEuler上大数据平台,将各种常用的工具软件集成提供统一的用户界面解决让大数据在openEuler上更易用。 - - openEuler上的大数据组件和平台的性能优化,让大数据在openEuler上更好用。 - - openEuler上的大数据相关能力集成,新芯片和软件进入openEuler时的支持。 +在openEuler平台上持续构建大数据生态: +- 基础运行能力,包括数据采集、数据传输、数据存储、数据分析、数据可视等。 +- 统一界面,将各种常用的工具软件集成提供统一的用户界面解决让大数据在openEuler上更易用。 +- 性能优化,让大数据在openEuler平台上发挥极致性能。 +- 集成能力,新芯片和软件进入openEuler时的支持。 ## 会议 -- 两周一次 + 按需出发,请订阅邮件列表获取具体时间和会议链接 -- 线上 +- 会议时间: 周四 16:00-17:00(GMT+08:00) 中国标准时间-北京 每两周一次 + 按需出发,详情可见订阅邮箱。 +- 订阅邮箱地址:bigdata@openeuler.org ## 成员 ### Maintainer列表 - - sinever - - njlzk - - yangzhao_kl - - wuzeyi1 - - unioah - -### Committer列表 - -- sinever - -## repository地址: - -- https://gitee.com/src-openeuler/jupyter -- https://gitee.com/src-openeuler/hadoop -- https://gitee.com/src-openeuler/libhdfs -- https://gitee.com/src-openeuler/gl2ps -- https://gitee.com/src-openeuler/lzip -- https://gitee.com/src-openeuler/zookeeper -- https://gitee.com/src-openeuler/kafka -- https://gitee.com/src-openeuler/zeppelin -- https://gitee.com/src-openeuler/ibis -- https://gitee.com/src-openeuler/presto -- https://gitee.com/src-openeuler/rain -- https://gitee.com/src-openeuler/ignite -- https://gitee.com/src-openeuler/bigtop -- https://gitee.com/src-openeuler/flume -- https://gitee.com/src-openeuler/notebook -- https://gitee.com/src-openeuler/datafu -- https://gitee.com/src-openeuler/epstool -- https://gitee.com/src-openeuler/flink -- https://gitee.com/src-openeuler/flume -- https://gitee.com/src-openeuler/ftgl -- https://gitee.com/src-openeuler/giraph -- https://gitee.com/src-openeuler/gl2ps -- https://gitee.com/src-openeuler/hadoop-3.1 -- https://gitee.com/src-openeuler/hadoop -- https://gitee.com/src-openeuler/hbase -- https://gitee.com/src-openeuler/hive -- https://gitee.com/src-openeuler/hue -- https://gitee.com/src-openeuler/ibis -- https://gitee.com/src-openeuler/ignite -- https://gitee.com/src-openeuler/impala -- https://gitee.com/src-openeuler/jupyter -- https://gitee.com/src-openeuler/kite-sdk -- https://gitee.com/src-openeuler/knox -- https://gitee.com/src-openeuler/kudu -- https://gitee.com/src-openeuler/kafka -- https://gitee.com/src-openeuler/libhdfs -- https://gitee.com/src-openeuler/libiodbc -- https://gitee.com/src-openeuler/llama -- https://gitee.com/src-openeuler/lzip -- https://gitee.com/src-openeuler/mahout -- https://gitee.com/src-openeuler/notebook -- https://gitee.com/src-openeuler/oozie -- https://gitee.com/src-openeuler/parquet-format -- https://gitee.com/src-openeuler/phantomjs -- https://gitee.com/src-openeuler/presto -- https://gitee.com/src-openeuler/protobuf2 -- https://gitee.com/src-openeuler/qfs -- https://gitee.com/src-openeuler/qrupdate -- https://gitee.com/src-openeuler/qscintilla -- https://gitee.com/src-openeuler/rain -- https://gitee.com/src-openeuler/redis5 -- https://gitee.com/src-openeuler/redis6 -- https://gitee.com/src-openeuler/spark -- https://gitee.com/src-openeuler/storm -- https://gitee.com/src-openeuler/telegraf -- https://gitee.com/src-openeuler/ycsb -- https://gitee.com/src-openeuler/zeppelin -- https://gitee.com/src-openeuler/zookeeper -- https://gitee.com/src-openeuler/delta -- https://gitee.com/src-openeuler/iceberg -- https://gitee.com/src-openeuler/hudi -- https://gitee.com/src-openeuler/apache-atlas - - -## 路线图 - -## 联系方式 -![输入图片说明](image.png) -## [邮件列表](https://mailweb.openeuler.org/hyperkitty/list/bigdata@openeuler.org/) -bigdata@openeuler.org + - 杨昭 [yangzhao_kl](https://gitee.com/yangzhao_kl) email地址: yangzhao1@kylinos.cn + - 吴泽艺 [wuzeyi1](https://gitee.com/wuzeyi1) email地址: zaki.wu@huawei.com + - 陈强 [macchen1](https://gitee.com/macchen1) email地址: mac.chenqiang@huawei.com + +# 创新项目 +| 项目 | 版本 | 状态 | 类别 | +| ---- | ---- | ---- | ---- | +|[VectorBlas](https://gitee.com/openeuler/vectorBlas) | 1.0 | 引入中| 数学库 | +|OmniRuntime算子下推 Hive特性|1.0|引入中|bigdata| +|Spark SQL Native|1.0|引入中|bigdata| + +# 开源实习 +openEuler开源实习是openEuler社区和社区合作单位共同发起的线上实习项目,旨在鼓励在校学生积极参与开源社区,在实际的开源环境中提升实践能力,在社区中成长为优秀的开源人才。 + +openEuler开源实习地址:https://www.openeuler.org/zh/internship/ + +bigdata 实习任务发布地址:https://www.openeuler.org/zh/sig/sig-detail/?name=bigdata + +## 组件清单 + +| 组件 | 版本 | 状态 | +| ---------------- |---------------- |---------------- | +| [accumulo](https://gitee.com/src-openeuler/accumulo) | 2.0.1 | 已落版本 | +| [alluxio](https://gitee.com/src-openeuler/alluxio) | 2.7.0 | 已落版本 | +| [ambari](https://gitee.com/src-openeuler/ambari) | 2.7.6 | 已落版本 | +| [apache-atlas](https://gitee.com/src-openeuler/apache-atlas) | 2.1.0 | 已落版本 | +| [apache-ranger](https://gitee.com/src-openeuler/apache-ranger) | 2.1.0 | 已落版本 | +| [avor](https://gitee.com/src-openeuler/avor) | 无 | 引入中 | +| [bigtop](https://gitee.com/src-openeuler/bigtop) | 无 | 引入中 | +| [blaze](https://gitee.com/src-openeuler/blaze) | 0.10.1 | 已落版本 | +| [calcite](https://gitee.com/src-openeuler/calcite) | 1.30.0 | 已落版本 | +| [datafu](https://gitee.com/src-openeuler/datafu) | 1.6.1 | 已落版本 | +| [delta](https://gitee.com/src-openeuler/delta) | 1.2.1 | 已落版本 | +| [druid](https://gitee.com/src-openeuler/druid) | 0.22.1 | 已落版本 | +| [flink](https://gitee.com/src-openeuler/flink) | 1.13.0 | 已落版本 | +| [flume](https://gitee.com/src-openeuler/flume) | 1.10.0 | 已落版本 | +| [giraph](https://gitee.com/src-openeuler/giraph) | 1.3.0 | 已落版本 | +| [hadoop](https://gitee.com/src-openeuler/hadoop) | 3.3.4 | 已落版本 | +| [hadoop-3.1](https://gitee.com/src-openeuler/hadoop-3.1) | 3.1.4 | 已落版本 | +| [hbase](https://gitee.com/src-openeuler/hbase) | 2.2.5 | 已落版本 | +| [hive](https://gitee.com/src-openeuler/hive) | 3.1.3 | 已落版本 | +| [hudi](https://gitee.com/src-openeuler/hudi) | 0.11.0 | 已落版本 | +| [hue](https://gitee.com/src-openeuler/hue) | 无 | 引入中 | +| [ibis](https://gitee.com/src-openeuler/ibis) | 1.3.0 | 已落版本 | +| [iceberg](https://gitee.com/src-openeuler/iceberg) | 0.13.0 | 已落版本 | +| [ignite](https://gitee.com/src-openeuler/ignite) | 2.9.0 | 已落版本 | +| [impala](https://gitee.com/src-openeuler/impala) | 无 | 引入中 | +| [kafka](https://gitee.com/src-openeuler/kafka) | 2.8.2 | 已落版本 | +| [kite-sdk](https://gitee.com/src-openeuler/kite-sdk) | 无 | 引入中 | +| [knox](https://gitee.com/src-openeuler/knox) | 1.6.1 | 已落版本 | +| [kudu](https://gitee.com/src-openeuler/kudu) | 无 | 引入中 | +| [libhdfs](https://gitee.com/src-openeuler/libhdfs) | 无 | 引入中 | +| [llama](https://gitee.com/src-openeuler/llama) | 无 | 引入中 | +| [mahout](https://gitee.com/src-openeuler/mahout) | 14.1 | 已落版本 | +| [oozie](https://gitee.com/src-openeuler/oozie) | 5.2.1 | 已落版本 | +| [parquet-format](https://gitee.com/src-openeuler/parquet-format) | 2.9.0 | 已落版本 | +| [presto](https://gitee.com/src-openeuler/presto) | 0.26 | 已落版本 | +| [qfs](https://gitee.com/src-openeuler/qfs) | 2.2.4 | 已落版本 | +| [redis5](https://gitee.com/src-openeuler/redis5) | 5.0.4 | 已落版本 | +| [redis6](https://gitee.com/src-openeuler/redis6) | 6.2.7 | 已落版本 | +| [spark](https://gitee.com/src-openeuler/spark) | 3.2.2 | 已落版本 | +| [storm](https://gitee.com/src-openeuler/storm) | 1.2.4 | 已落版本 | +| [ycsb](https://gitee.com/src-openeuler/ycsb) | 0.17.0 | 已落版本 | +| [zeppelin](https://gitee.com/src-openeuler/zeppelin) | 无 | 引入中 | +| [zookeeper](https://gitee.com/src-openeuler/zookeeper) | 3.8.0 | 已落版本 | + +### 说明 +| 组件状态 | 说明 | +|------|----| +| 待引入 | 该组件有需求,但尚未在openEuler中建仓 | +| 引入中 | 该组件已在openEuler建仓且代码正在从上游社区引入,待进入openEuler发行版本 | +| 已落版本 | 该组件已落openEuler发行版本 | + + + +## 链接 +openEuler bigdata sig组 简介: https://gitee.com/openeuler/community/tree/master/sig/bigdata + +openEuler bigdata 月刊归档地址: + +邮件列表归档地址: + +会议纪要地址:[会议纪要](https://gitee.com/openeuler/bigdata/wikis/sig-bigdata%E4%BB%8B%E7%BB%8D) + + + +## 联系方式: +邮箱地址:https://mailweb.openeuler.org/hyperkitty/list/bigdata@openeuler.org/ + +微信公众号:openEuler-bigdata-sig diff --git a/readme-English.md b/readme-English.md new file mode 100644 index 0000000000000000000000000000000000000000..af6a1d7ec9f94d39f4e320ba3b45bfc23b120700 --- /dev/null +++ b/readme-English.md @@ -0,0 +1,111 @@ +# bigdata + + +## expectation +Build and improve the big data ecosystem in the openEuler community, build an active big data communication platform, and enrich and improve the functions and performance of big data components, +Explore users' big data requirements and incubate potential big data components. + +## Business Scope + - OpenEuler provides basic big data running capabilities, including data collection, data transmission, data storage, data analysis, and data visualization. + - OpenEuler integrates various common tools and software to provide a unified user interface, making big data easier to use on OpenEuler. + - OpenEuler optimizes the performance of big data components and makes big data better used on OpenEuler. + - OpenEuler integrates big data capabilities to support new chips and software when entering OpenEuler. + +## Meeting + +- Meeting time: Thursday 16:00-17:00(GMT+08:00) China Standard Time - Beijing Once every two weeks + Departure on demand,For details, see the subscription email address. +- subscription Email Address:bigdata@openeuler.org + +## Member + +### Maintainer List + + - Zhao Yang [yangzhao_kl](https://gitee.com/yangzhao_kl) email: yangzhao1@kylinos.cn + - ZeYi Wu [wuzeyi1](https://gitee.com/wuzeyi1) email: zaki.wu@huawei.com + - Qiang Chen [macchen1](https://gitee.com/macchen1) email: mac.chenqiang@huawei.com + +# innovative project +| innovative project | version | status | category | +| ---- | ---- | ---- | ---- | +| [VectorBlas](https://gitee.com/openeuler/vectorBlas) | 1.0 | Introducting| math library | +|OmniRuntime operator pushdown Hive characteristic|1.0|Introducting|bigdata| +|Spark SQL Native|1.0|Introducting|bigdata| + +# Open-source Internship +OpenEuler open-source internship is an online internship program jointly sponsored by the openEuler community and community partners. It aims to encourage students to actively participate in the open source community, improve their practical capabilities in the actual open source environment, and grow into excellent open source talents in the community. + +openEuler open-source internship link address:https://www.openeuler.org/zh/internship/ + +openeuler bigda internship tasks link address :https://www.openeuler.org/zh/sig/sig-detail/?name=bigdata + +## event list: + +| event | version | status | +| ---------------- |---------------- |---------------- | +|[accumulo](https://gitee.com/src-openeuler/accumulo)|2.0.1|Existing Version| +|[alluxio](https://gitee.com/src-openeuler/alluxio)|2.7.0|Existing Version| +|[ambari](https://gitee.com/src-openeuler/ambari)|2.7.6|Existing Version| +|[apache-atlas](https://gitee.com/src-openeuler/apache-atlas)|2.1.0|Existing Version| +|[apache-ranger](https://gitee.com/src-openeuler/apache-ranger) |2.1.0|Existing Version| +|[avor](https://gitee.com/src-openeuler/avor)|None| Introducting| +|[bigtop](https://gitee.com/src-openeuler/bigtop)|None| Introducting| +|[blaze](https://gitee.com/src-openeuler/blaze) |0.10.1|Existing Version| +|[calcite](https://gitee.com/src-openeuler/calcite)|1.30.0|Existing Version| +|[datafu](https://gitee.com/src-openeuler/datafu)|1.6.1 |Existing Version| +|[delta](https://gitee.com/src-openeuler/delta) |1.2.1 |Existing Version| +|[druid](https://gitee.com/src-openeuler/druid) |0.22.1 |Existing Version| +|[flink](https://gitee.com/src-openeuler/flink) |1.13.0 |Existing Version| +|[flume](https://gitee.com/src-openeuler/flume) |1.10.0 |Existing Version| +|[giraph](https://gitee.com/src-openeuler/giraph)|1.3.0 |Existing Version| +|[hadoop](https://gitee.com/src-openeuler/hadoop)|3.3.4 |Existing Version| +|[hadoop-3.1](https://gitee.com/src-openeuler/hadoop-3.1)|3.1.4|Existing Version| +|[hbase](https://gitee.com/src-openeuler/hbase) |2.2.5|Existing Version | +|[hive](https://gitee.com/src-openeuler/hive)| 3.1.3 |Existing Version| +|[hudi](https://gitee.com/src-openeuler/hudi)| 0.11.0 |Existing Version| +|[hue](https://gitee.com/src-openeuler/hue)|无|Existing Version| +|[ibis](https://gitee.com/src-openeuler/ibis)|1.3.0|Existing Version| +|[iceberg](https://gitee.com/src-openeuler/iceberg)|0.13.0|Existing Version| +|[ignite](https://gitee.com/src-openeuler/ignite)|2.9.0 |Existing Version| +|[impala](https://gitee.com/src-openeuler/impala)|None| Introducting| +|[kafka](https://gitee.com/src-openeuler/kafka) |2.8.2| Existing Version| +|[kite-sdk](https://gitee.com/src-openeuler/kite-sdk)|None| Introducting| +|[knox](https://gitee.com/src-openeuler/knox)|1.6.1|Existing Version| +|[kudu](https://gitee.com/src-openeuler/kudu)|None| Introducting| +|[libhdfs](https://gitee.com/src-openeuler/libhdfs)|None| Introducting| +|[llama](https://gitee.com/src-openeuler/llama) |None| Introducting| +|[mahout](https://gitee.com/src-openeuler/mahout)|14.1|Existing Version| +|[oozie](https://gitee.com/src-openeuler/oozie) |5.2.1|Existing Version| +|[parquet-format](https://gitee.com/src-openeuler/parquet-format)|2.9.0|Existing Version| +|[presto](https://gitee.com/src-openeuler/presto)|0.26|Existing Version| +|[qfs](https://gitee.com/src-openeuler/qfs)|2.2.4|Existing Version| +|[redis5](https://gitee.com/src-openeuler/redis5)|5.0.4|Existing Version| +|[redis6](https://gitee.com/src-openeuler/redis6)|6.2.7|Existing Version| +|[spark](https://gitee.com/src-openeuler/spark) |3.2.2|Existing Version| +|[storm](https://gitee.com/src-openeuler/storm) |1.2.4|Existing Version| +|[ycsb](https://gitee.com/src-openeuler/ycsb)|0.17.0|Existing Version| +|[zeppelin](https://gitee.com/src-openeuler/zeppelin)|None| Introducting| +|[zookeeper](https://gitee.com/src-openeuler/zookeeper) |3.8.0|Existing Version| + +### explain + +| Component Status | explain | +|------|----| +|To be introduced | This component is required, but the warehouse has not been created in openEuler | +| Introducting | This component has been created in OpenEuler and its code is being imported from the upstream community. It will be released in OpenEuler.| +| Existing Version | This component has been released in the openEuler version | + +## inkage +openEuler bigdata sigintroduction: https://gitee.com/openeuler/community/tree/master/sig/bigdata + +openEuler bigdata Monthly magazine archive address: + +Mailing List Archive Address: + +Address of meeting minutes:[Address of meeting minutes](https://gitee.com/openeuler/bigdata/wikis/sig-bigdata%E4%BB%8B%E7%BB%8D) + + +## contact details +### [message list](https://mailweb.openeuler.org/hyperkitty/list/bigdata@openeuler.org/) +### WeChat official account:openEuler-bigdata-sig + +