• [其他] 【故障】 用户配置 SQL on Hadoop 查询报错
    【问题描述】配置sql on hadoop 查询报错 ERROR: Login failed on cn_5001, check your principal and keytab【分析过程】从报错信息上分析,是由于CN_5001 在登录 hadoop的时候没有成功,报出来的这个错误。首先怀疑是由于集群的网络原因导致的。通过ping nameNode节点,发现网络是通的。通过telnet nameNode节点,发现端口不通。查看nameNode 节点的防火墙配置:netstat -anp | grep xxxx【解决办法】    打开防火墙端口    
  • [技术干货] Hadoop 文件系统操作
    本文介绍Hadoop 文件系统的基本操作,主要涉及 往Hadoop大数据集群拷文件,下载文件到本地,文件查看,创建等。当前华为云集群 hadoop 命令存在于目录 /opt/Bigdata/hadoop/hadoop/bin/hadoop 详情请点击博文链接:https://bbs.huaweicloud.com/blogs/170794
  • 鲲鹏平台 tez 0.9.2 迁移适配hadoop3:问题及解决方法 ★☆☆
    编译环境准备:可以参考其他大数据组件的编译环境指南,如下连接可以参考https://bbs.huaweicloud.com/forum/thread-28829-1-1.html1、JDK环境2、maven环境3、Phantomjs4、安装nodejs编译 tez 支持 hadoop3下载源码:https://github.com/apache/tez/archive/rel/release-0.9.2.tar.gz默认tez对应hadoop-2.7.2问题1:需要打补丁才能支持hadoop3补丁下载:https://issues.apache.org/jira/browse/TEZ-38840.9.1  0.9.2 都可以把补丁放在解压后的tez目录下:执行:patch -p 0 < tez3884.patch.1问题2:bower无root权限[DEBUG] Executing command line [/build/02_build_version/tez/tez-rel-release-0.9.2/tez-ui/src/main/webapp/node/node, /build/02_build_version/tez/tez-rel-release-0.9.2/tez-ui/src/main/webapp/node_modules/bower/bin/bower, install][ERROR] bower ESUDO         Cannot be run with sudo[ERROR][ERROR] Additional error details:[ERROR] Since bower is a user command, there is no need to execute it with superuser permissions.[ERROR] If you're having permission errors when using bower without sudo, please spend a few minutes learning more about how your system should work and make any necessary repairs.[ERROR][ERROR] http://www.joyent.com/blog/installing-node-and-npm[ERROR] https://gist.github.com/isaacs/579814[ERROR][ERROR] You can however run a command with sudo using "--allow-root" option修改 ./tez-ui/pom.xml在bower install的arguments 里加上 --allow-root问题3 : 编译命令选项:mvn clean package -DskipTests=true -Dmaven.javadoc.skip=true -Dhadoop.version=3.1.0 -Phadoop3skipTests 要带上,编译环境不一定满足测试,tez-ui test失败中断过-Phadoop3 补丁中带有 hadoop3 profile,编译hadoop3 版本要带上 -Dhadoop.version=3.1.0 指定需要的hadoop.version问题5: nodejs和phantomjs 版本不匹配最初用的 nodejs版本是4.2.6,提示重新安装phantomjs实际上已经安装了phantomjs,原因应该版本不匹配于是下载了新点的node arm64版本 node 8.6.0 wget http://nodejs.org/dist/v8.6.0/node-v8.6.0-linux-arm64.tar.gz须知:可能需要加上--no-check-certificate参数 tar -zxf node-v8.6.0-linux-arm64.tar.gz mv node-v8.6.0-linux-arm64 /opt/tools/installed修改/etc/profile文件,配置环境变量。 JAVA_HOME=/opt/tools/installed/jdk8u222-b10 MAVEN_HOME=/opt/tools/installed/apache-maven-3.5.4 PHANTOMJS_HOME=/opt/tools/installed/phantomjs NODE_HOME=/opt/tools/installed/node-v8.6.0-linux-arm64 PATH=$NODE_HOME/bin:$PHANTOMJS_HOME/bin:$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH export NODE_HOME PHANTOMJS_HOME MAVEN_HOME JAVA_HOME PATH使修改的环境变量生效。 source /etc/profile现在环境中的 node 和 phantomjs[root@taishan tez-rel-release-0.9.2-hadoop-3.1]# phantomjs -v1.9.8[root@taishan tez-rel-release-0.9.2-hadoop-3.1]# node -vv8.6.0问题解决编译成功:
  • [迁移工具] 扫描工具在扫描hadoop的X86 RPM包,只扫描出了依赖的jar包,没有扫描出最终的so库,使用checkSo工具能够扫描出
    扫描工具在扫描hadoop的X86 RPM包,只扫描出了依赖的jar包,没有扫描出最终的so库,使用checkSo工具能够扫描出dependency工具扫描结果:checkSo扫描结果:
  • 【鲲鹏翱翔】大数据组件01-Hadoop移植安装指南
    1.   简介Hadoop是一个开源的分布式存储及计算框架,被广泛用于海量数据的存储及处理,可以以可靠、高效、可伸缩的方式进行数据处理。2.   部署环境Packet NameVersionDetailCentOSCentOS 7.5 64bit with ARMarm通用计算增强型   2vCPUs | 4GB | kc1.large.2Hadoop3.1.3GCC4.8.5Yum安装MavenApache-maven-3.3.9 JDK1.8.0_191 Protoc2.5.0 Cmake3.1.2 3.   安装部署3.1安装基本依赖库yum install gcc.aarch64 gcc-c++.aarch64 gcc-gfortran.aarch64   libgcc.aarch64yum install openssl-devel zlib-devel automake libtool cmake3.2 安装OpenJDK下载OpenJDK安装包wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u191-b12/OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gz解压安装包tar -zxvf   OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gz创建指定文件夹mkdir -p /opt/tools/installed将JDK移动到相应位置mv jdk8u191-b12 /opt/tools/installed/3.3 安装Mavenwget   https://archive.apache.org/dist/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gztar -zxvf apache-maven-3.3.9-bin.tar.gzmv apache-maven-3.3.9   /opt/tools/installed/下载Maven安装包配置环境变量,在/etc/profile后面加上JAVA_HOME=/opt/tools/installed/jdk8u191-b12MAVEN_HOME=/opt/tools/installed/apache-maven-3.3.9PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATHexport MAVEN_HOME JAVA_HOME PATH运行命令,使环境变量生效source /etc/profile3.4 安装Protocwget   https://github.com/protocolbuffers/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gztar -zxvf   protobuf-2.5.0.tar.gzcd protobuf-2.5.0下载并解压源码打上补丁wget https://obs-mirror-ftp4.obs.cn-north-4.myhuaweicloud.com/tools/protoc.patchcp protoc.patch   ./src/google/protobuf/stubs/cd   ./src/google/protobuf/stubs/patch -p1 < protoc.patch安装./autogen.sh &&   ./configure CFLAGS='-fsigned-char' && make && make install3.5 安装cmakewget   https://cmake.org/files/v3.1/cmake-3.1.2.tar.gztar -zxvf  cmake-3.1.2.tar.gzCentOS7.5默认的cmake是2.8版本的,hadoop3.1.3要求Cmake3.1以上, 需要手动安装下载并解压安装cd cmake-3.1.2./configuremake && make install3.6 编译hadoopwget   https://www.apache.org/dist/hadoop/common/hadoop-3.1.3/hadoop-3.1.3-src.tar.gzcd hadoop-3.1.3-srcmvn package -DskipTests   -Pdist,native -Dtar -Dmaven.javadoc.skip=true4 .示例测试使用hadoop自带测试程序计算PI值cd hadoop-3.1.3-src/hadoop-dist/target/hadoop-3.1.3./bin/yarn jar   ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi 5 10运行成功。5.FAQGCC版本不能太高,编译的时候会报错。
  • hadoop2.5.3迁移指南-cenos7.6
    一 介绍Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算二环境信息本组件是基于鲲鹏920的centos7.6进行编译三 配置编译环境3.1 安装Openjdk下载并安装到指定目录(如/opt/tools/installed):wget  https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u191-b12/OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gztar   -zxf OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gzmv jdk8u191-b12   /opt/tools/installed/配置java环境变量,在/etc/profile文件末尾处增加下面的代码:JAVA_HOME=/opt/tools/installed/jdk8u191-b12PATH=$JAVA_HOME/bin:$PATHexport   JAVA_HOME PATH运行下面命令,使修改的环境变量生效:source   /etc/profile3.2 安装Maven下载并安装到指定目录(如/opt/tools/installed):wget   https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gztar   -zxf apache-maven-3.5.4-bin.tar.gzmv   apache-maven-3.5.4 /opt/tools/installed/修改maven环境变量,在/etc/profile文件末尾增加下面高亮代码:JAVA_HOME=/opt/tools/installed/jdk8u191-b12MAVEN_HOME=/opt/tools/installed/apache-maven-3.5.4PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATHexport   MAVEN_HOME   JAVA_HOME PATH运行下面的命令,是修改的环境变量生效:source   /etc/profile修改maven配置文件中的:本地仓路径、远程仓等:配置文件路径:/opt/tools/installed/apache-maven-3.5.4/conf/settings.xml本地仓库配置:<!--默认在“~/.m2/”目录下,修改成你自己想保存的目录--><localRepository>/path/to/local/repo</localRepository>远程仓库配置:<!--修改成自己搭建的maven仓库,如果没有,可以使用下面的aliyun --><mirror>  <id>alimaven</id>  <name>aliyun maven</name>  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  <mirrorOf>central</mirrorOf>   </mirror>配置代理:  <proxies>   <proxy>      <id>optional</id>      <active>true</active>      <protocol>http</protocol>      <username>用户名</username>      <password>密码</password>      <host>代理服务器网址</host>      <port>代理服务器端口</port>        <nonProxyHosts>local.net|some.host.com</nonProxyHosts>    </proxy>  </proxies> 3.3 安装GCC挂载OS镜像:mount   YOUR_OS.iso /media -o loop修改/etc/yum.repos.d/Base.repo文件,配置yum本地源:[Local]name=CentOS-7.4   Localbaseurl=file:///media/enabled=1gpgcheck=0运行下面的命令,使yum源配置生效:yum   clean allyum   makecacheyum安装GCC相关软件:yum   install gcc.aarch64 gcc-c++.aarch64 gcc-gfortran.aarch64 libgcc.aarch64四获取源码进入home目录,下载hadoop源码包cd /homewget https://github.com/hortonworks/hadoop-release/archive/HDP-2.5.3.0-tag.tar.gz解压安装包,进入解压目录tar -xvf HDP-2.5.3.0-tag.tar.gzcd hadoop-release-HDP-2.5.3.0-tag五 编译安装5.1 执行mvn命令编译执行mvn编译:mvn package -DskipTests -Pdist,native -Dtar -Dsnappy.lib=/usr/local/lib64 -Dbundle.snappy -Dmaven.javadoc.skip=true编译后的结果如下需要查看下是hadoop-release-HDP-2.5.3.0-tag/hadoop-dist/target/hadoop-2.7.1-SNAPSHOT/lib/native否有生成对应的libhadoop.so和libhdfs.so以及libsnappy.so等库文件,生成的这些库文件是需要在做arm版的rpm包时替换用的 
  • Hadoop 2.7.5编译指导for Centos 7.6 ★★★
    1 软硬件环境类别子项版本获取地址(方法) 硬件CPU鲲鹏920--网络Ethernet-10GE--内存xxG   xxxMHz--OSCentOS7.6Kernel4.14 软件GCC4.8.5参考下面安装说明Maven3.5.4参考下面安装说明JDK1.8.0_191参考下面安装说明Protoc2.5.0参考下面安装说明2 编译环境准备2.1 安装Openjdk下载并安装到指定目录(如/opt/tools/installed):wget  https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u191-b12/OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gztar   -zxf OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gzmv jdk8u191-b12   /opt/tools/installed/配置java环境变量,在/etc/profile文件末尾处增加下面的代码:JAVA_HOME=/opt/tools/installed/jdk8u191-b12PATH=$JAVA_HOME/bin:$PATHexport   JAVA_HOME PATH运行下面命令,使修改的环境变量生效:source   /etc/profile2.2 安装Maven下载并安装到指定目录(如/opt/tools/installed):wget   https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gztar   -zxf apache-maven-3.5.4-bin.tar.gzmv   apache-maven-3.5.4 /opt/tools/installed/修改maven环境变量,在/etc/profile文件末尾增加下面高亮代码:JAVA_HOME=/opt/tools/installed/jdk8u191-b12MAVEN_HOME=/opt/tools/installed/apache-maven-3.5.4PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATHexport   MAVEN_HOME   JAVA_HOME PATH运行下面的命令,是修改的环境变量生效:source   /etc/profile修改maven配置文件中的:本地仓路径、远程仓等:配置文件路径:/opt/tools/installed/apache-maven-3.5.4/conf/settings.xml本地仓库配置:<!--默认在“~/.m2/”目录下,修改成你自己想保存的目录,也可以不改--><localRepository>/path/to/local/repo</localRepository>远程仓库配置:<!--修改成自己搭建的maven仓库,如果没有,可以使用下面的aliyun --><mirror>  <id>alimaven</id>  <name>aliyun maven</name>  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  <mirrorOf>central</mirrorOf>   </mirror>配置代理(视具体网络环境而定,不需要代理即可访问公网的此处不用配置):  <proxies>   <proxy>      <id>optional</id>      <active>true</active>      <protocol>http</protocol>      <username>用户名</username>      <password>密码</password>      <host>代理服务器网址</host>      <port>代理服务器端口</port>        <nonProxyHosts>local.net|some.host.com</nonProxyHosts>    </proxy>  </proxies>2.3 安装GCCyum安装GCC相关软件:yum   install gcc.aarch64 gcc-c++.aarch64 gcc-gfortran.aarch64 libgcc.aarch642.4 安装Protoc下载并解压源码:wget   https://github.com/protocolbuffers/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gztar   -zxf protobuf-2.5.0.tar.gzcd   protobuf-2.5.0打ARM补丁,补丁内容参考:https://www.huaweicloud.com/kunpeng/software/hadoop.htmlcp   protoc.patch ./src/google/protobuf/stubs/cd   ./src/google/protobuf/stubs/patch   -p1 < protoc.patchcd   -编译并安装到系统默认目录:./autogen.sh   && ./configure CFLAGS='-fsigned-char' && make && make   install2.5解决-fsigned-char问题1.使用command -v gcc命令寻找gcc所在路径(一般位于/usr/bin/gcc)2.更改gcc的名字(比如改成gcc-impl)3.在gcc所在目录执行vim gcc,并填入如下内容保存:#!   /bin/sh/usr/bin/gcc-impl   -fsigned-char “$@”4.执行chmod +x gcc给脚本添加执行权限5.使用与1-4步相似的方式给g++创建同名字的脚本文件 3 依赖库编译3.1 基本库安装使用yum安装:yum   install openssl-devel zlib-devel automake libtool cmake libstdc++-static glibc-static   git gcc gcc-c++ make3.2 依赖库分析      使用checkSo工具,扫描hadoop 2.7.5版本安装包(扫描前先删除tmp目录,扫描后除了检查result文件,还要检查tmp下log文件),发现有3个依赖:leveldbjni-all-1.8.jar、netty-all-4.0.23.Final.jar、snappy-java-1.0.4.1.jar3.3 leveldbjni-all-1.8.jar编译   参考leveldbjni-all编译指南进行编译:https://bbs.huaweicloud.com/forum/thread-22684-1-1.html 或从华为镜像站下载编译好的jar包:https://repo.huaweicloud.com/repository/maven/kunpeng/org/fusesource/leveldbjni/leveldbjni-all/1.8/leveldbjni-all-1.8.jar    将编译好的jar包直接替换安装到本地仓3.4 netty-all-4.0.23.Final.jar编译   参考netty-all编译指南进行编译:https://bbs.huaweicloud.com/forum/thread-22724-1-1.html     或直接从华为镜像站下载编译好的jar包:https://repo.huaweicloud.com/repository/maven/kunpeng/io/netty/netty-all/4.0.23.Final/netty-all-4.0.23.Final.jar     将编译好的jar包直接替换安装到本地仓3.5 snappy-java-1.0.4.1.jar编译   直接从华为镜像站下载编译好的jar包:https://repo.huaweicloud.com/repository/maven/kunpeng/org/xerial/snappy/snappy-java/1.0.4.1/snappy-java-1.0.4.1.jar      或按照下面编译指导进行编译,将编译好的jar包直接替换安装到本地仓3.5.1 功能简介Snappy是Google开源的压缩/解压缩库,snappy-java封装了其接口3.5.2 编译步骤1)从github网站下载源码并解压wget https://codeload.github.com/xerial/snappy-java/tar.gz/snappy-java-1.0.4.1mv snappy-java-1.0.4.1   snappy-java-1.0.4.1.tar.gztar -xzvf snappy-java-1.0.4.1.tar.gzcd snappy-java-snappy-java-1.0.4.12)修改Makefile文件中snappy源码的下载路径:因为默认的路径已经失效,需要使用新的下载路径:http://repository.timesys.com/buildsources/s/snappy/snappy-1.0.4/snappy-1.0.4.tar.gz注:若还是提示未下载成功,则需要手动wget下载,放到指定目录3)执行编译make可以在target目录下找到生成的jar包:snappy-java-1.0.4.1.jar 编译完成的jar包需要替换到自己搭建的本地仓库中。4 Hadoop编译4.1 下载源码下载代码并解压:wget https://archive.apache.org/dist/hadoop/core/hadoop-2.7.5/hadoop-2.7.5-src.tar.gztar -zxvf hadoop-2.7.5-src.tar.gz4.2 执行编译进入hadoop源码解压目录:cd hadoop-2.7.5-src执行编译:mvn package -DskipTests -Pdist,native -Dtar  -Dmaven.javadoc.skip=true5 FAQ5.1 git clone5.1.1 报证书错误问题现象5.1.2 解决方法git config --global http."sslVerify" false5.2 hadoop编译下载报错5.2.1 问题现象25.2.2 解决方法2在服务器下载apache-tomcat-6.0.44.tar.gz失败,需要用其他方法,例如在windows下载对应文件,并将其拷贝到hadoop-release-HDP-2.3.4.7-tag/hadoop-common-project/hadoop-kms/downloads目录下。5.2.3 问题现象35.2.4 解决方法3这个问题是由于从远端仓库下载jetty-util-6.1.26.hwx.jar失败,应该是从https://repository.apache.org/content/repositories/snapshorts下载不到对应的jar包。可以去http://repo.spring.io/plugins-release/org/找对应的jar包和pom文件,并放到本地仓库对应的路径下。从报错信息可以看出,jar包的本地路径是~/.m2/repository/org/mortbay/jetty/jetty-util/6.1.26.hwx,对应的远端仓库路径则是:http://repo.spring.io/plugins-release/org/mortbay/jetty/jetty-util/6.1.26.hwx/jetty-util-6.1.26.hwx.jar 。可以看出来,远端仓库的路径和本地仓库路径是一一对应的。后续如果再出现这样的问题,也可以参考这样修改。不过记得要将jar包对应的pom文件也下载下来放到本地仓库。5.4 编译leveldbjni报automake找不到5.4.1 问题现象 5.4.2 解决方法没有安装automake-1.14,可以使用yum install automake安装。如果yum源上找的没有1.14的版本,则需要修改leveldbjni-linux64/target/native-build下的配置文件。修改configure和aclocal.m4,将里面的1.14改成服务器上安装的automake版本,比如1.13.4。5.5 error: required file 'autotools/compile' not found5.5.1 问题现象 5.5.2 解决方法根据问题信息,需要手动进入相应目录,手动执行相应命令安装。cd leveldbjni-linux64/target/native-buildautomake   --add-missing
  • [HPC] Hadoop 3.1.2+Spark 2.4.4 移植指南(CentOS 7.6)
    文档位置已迁移至如下链接:https://support.huaweicloud.com/prtg-kunpenghpcs/kunpenghpcs_prtg_0013.html
  • [HPC] GATK 4.0.0.0 移植指南(CentOS 7.6)
    文档位置已迁移至如下链接:https://support.huaweicloud.com/prtg-kunpenghpcs/kunpenghpcs_prtg_0011.html
  • [大数据] Impala-2.12.0-cdh-5.16.1软件移植(手动)指导书
    Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。《Impala-2.12.0-cdh-5.16.1软件移植(手动)指导书》请见附件impala具体修改代码可以参考: impala社区master分支,master已经合入aarch64平台支持 https://github.com/apache/impala第三方依赖的aarch64平台补丁可以到这个代码仓获取,对应依赖软件已合入aarch64平台支持 https://github.com/cloudera/native-toolchain/tree/master/source社区issue:impala: https://issues.apache.org/jira/browse/IMPALA-9376第三方依赖:https://issues.apache.org/jira/browse/IMPALA-9236
  • [分享交流] 使用maven工程构建java 的hadoop客户端
    使用maven工程构建java 的hadoop客户端项目说明通过java操作hadoop中的hdfs分布式文件系统,首先我们要建新一个maven的java工程,然后在pom.xml导入hadoop的如果的依赖java包。再编写一个java的测试类去连接hadoop的集群环境。注意hadoop集群版本与导入hadoop-client的版本要一致,避免产生其它的问题。工程目录导入Maven的依赖包   <dependencies>        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>4.11</version>            <scope>test</scope>        </dependency>        <dependency>            <groupId>org.apache.hadoop</groupId>            <artifactId>hadoop-client</artifactId>            <version>3.0.0</version>        </dependency>    </dependencies>编写Java处理hadoop集群的测试类package net.togogo.hdfs; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.LocatedFileStatus; import org.apache.hadoop.fs.Path; import org.apache.hadoop.fs.RemoteIterator; import org.junit.Before; import org.junit.Test; import java.io.IOException; import java.net.URI; /** * 构建HdfsClient来操作hadoop集群 */ public class HdfsClient {    private FileSystem fs = null;    /**     * 构建分布式文件系统的操作对象FileSystem     */    @Before    public void init() {        System.out.println(" init methon start ....");        try {            Configuration conf = new Configuration();            //连接集群的地址            URI uri = new URI("hdfs://192.168.20.32:9000");            fs = FileSystem.get(uri, conf, "hd");            System.out.println("FileSystem---->" + fs);        } catch (Exception e) {            e.printStackTrace();        }        System.out.println(" init methon end ....");    }    /**     * 命令 hadoop fs -ls /     */    @Test    public void listRoot() {        try {            System.out.println("listRoot method ....");            //访问 hadoop fs -ls /            RemoteIterator it = fs.listFiles(new Path("/"), true);            //循环            while (it.hasNext()) {                LocatedFileStatus lf = it.next();                System.out.println(lf.getPath().getName());            }            fs.close();        } catch (Exception e) {            e.printStackTrace();        }    }    /**     * 命令 hadoop fs -mkdir /test0831     */    @Test    public void mkdir() {        try {            Path path = new Path("/test0831");            fs.mkdirs(path);            fs.close();        } catch (IOException e) {            e.printStackTrace();        }    }    /**     * 命令 hadoop fs -put F:/hello.log   /     */    @Test    public void upload() {        try {            Path src = new Path("F:/hello.log");            Path dst = new Path("/");            fs.copyFromLocalFile(src, dst);        } catch (IOException e) {            e.printStackTrace();        }    }    /**     * 命令 hadoop fs -get /hello.log  F:/dsthello.log     */    @Test    public void download() {        try {            Path src = new Path("/hello.log");            Path dst = new Path("F:/dsthello.log");            fs.copyToLocalFile(src, dst);        } catch (IOException e) {            e.printStackTrace();        }    } }腾科IT教育
  • [热门活动] Maven构建java工程操作hdfs实例
    Maven构建java工程操作hdfs实例腾科教育以为理论+实操为主的教学,带你进入大数据开发基础。每一步都带着你,让你一步一步实现自已的大数据开发梦想。构建maven工程 导入maven类包 <dependencies>     <dependency>       <groupId>junit</groupId>       <artifactId>junit</artifactId>       <version>4.11</version>       <scope>test</scope>     </dependency>     <dependency>       <groupId>org.apache.hadoop</groupId>       <artifactId>hadoop-client</artifactId>       <version>2.8.1</version>     </dependency>   </dependencies>编写Junit单元测试类package net.togogo.hdfsproject;   import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import org.junit.Before; import org.junit.Test;   import java.io.FileNotFoundException; import java.io.IOException; import java.net.URI;   public class HdfsClientTest {     FileSystem fs = null;       @Before     public void init() throws Exception {           // 构造一个配置参数对象,设置一个参数:我们要访问的hdfs的URI         // 从而FileSystem.get()方法就知道应该是去构造一个访问hdfs文件系统的客户端,以及hdfs的访问地址         // new Configuration();的时候,它就会去加载jar包中的hdfs-default.xml         // 然后再加载classpath下的hdfs-site.xml         Configuration conf = new Configuration();         conf.set("fs.defaultFS", "hdfs://192.168.75.129:9000");         /**          * 参数优先级: 1、客户端代码中设置的值 2、classpath下的用户自定义配置文件 3、然后是服务器的默认配置          */         conf.set("dfs.replication", "3");           // 获取一个hdfs的访问客户端,根据参数,这个实例应该是DistributedFileSystem的实例         // fs = FileSystem.get(conf);           // 如果这样去获取,那conf里面就可以不要配"fs.defaultFS"参数,而且,这个客户端的身份标识已经是hadoop用户         fs = FileSystem.get(new URI("hdfs://192.168.75.129:9000"), conf, "hadoop");       }       @Test     public void testAddFileToHdfs(){         // 要上传的文件所在的本地路径         Path src = new Path("D:\\stone\\HCNA-AI\\images\\idcard.jpg");         // 要上传到hdfs的目标路径         Path dst = new Path("/togogo/idcard.jpg");         try {             fs.copyFromLocalFile(src,dst);             System.out.println("文件上传成功...");         } catch (IOException e) {             e.printStackTrace();         }     }       @Test     public void testDelFileFromHdfs(){         // 要上传到hdfs的目标路径         Path dst = new Path("/togogo/work");         try {            fs.delete(dst,true);             System.out.println("文件删除成功...");         } catch (IOException e) {             e.printStackTrace();         }     }       /**      * 查看目录信息,只显示文件      *      * @throws IOException      * @throws IllegalArgumentException      * @throws FileNotFoundException      */     @Test     public void testListFiles() throws FileNotFoundException, IllegalArgumentException, IOException {           // 思考:为什么返回迭代器,而不是List之类的容器         RemoteIterator           while (listFiles.hasNext()) {             LocatedFileStatus fileStatus = listFiles.next();             System.out.println(fileStatus.getPath().getName());             System.out.println(fileStatus.getBlockSize());             System.out.println(fileStatus.getPermission());             System.out.println(fileStatus.getLen());             BlockLocation[] blockLocations = fileStatus.getBlockLocations();             for (BlockLocation bl : blockLocations) {                 System.out.println("block-length:" + bl.getLength() + "--" + "block-offset:" + bl.getOffset());                 String[] hosts = bl.getHosts();                 for (String host : hosts) {                     System.out.println(host);                 }             }             System.out.println("--------------为angelababy打印的分割线--------------");         }     }       /**      * 查看文件及文件夹信息      *      * @throws IOException      * @throws IllegalArgumentException      * @throws FileNotFoundException      */     @Test     public void testListAll() throws FileNotFoundException, IllegalArgumentException, IOException {           FileStatus[] listStatus = fs.listStatus(new Path("/"));           String flag = "d--             ";         for (FileStatus fstatus : listStatus) {             if (fstatus.isFile())  flag = "f--         ";             System.out.println(flag + fstatus.getPath().getName());         }     } }
  • [其他] SAP对接MRS操作指南
    SAP数据导入到MRS服务操作指导本文主要指导将SAP上的数据导出到MRS集群的过程环境信息:MRS集群版本以MRS_2.0.0为例(建议使用普通集群),并安装HADOOP和HIVE服务;操作位置为集群的master节点;SAP服务器能与MRS集群互联互通;192.168.0.100(示例)为SAP服务器IP。安装Sqoop1) 下载开源Sqoophttp://www.apache.org/dyn/closer.lua/sqoop/1.4.72) 将下载好的sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz 包放入MRS集群master节点的/opt/sqoop目录,并解压3) 进入解压完成的目录,修改权限和配置chmod 755 -R /opt/sqoop/sqoop-1.4.7.bin__hadoop-2.6.0 chown omm:wheel -R /opt/sqoop/sqoop-1.4.7.bin__hadoop-2.6.0 cd /opt/sqoop/sqoop-1.4.7.bin__hadoop-2.6.0/conf cp sqoop-env-template.sh sqoop-env.sh vi sqoop-env.sh添加配置:export HADOOP_COMMON_HOME=/opt/client/HDFS/hadoop export HADOOP_MAPRED_HOME=/opt/client/HDFS/hadoop export HIVE_HOME=/opt/Bigdata/MRS_2.0.0/install/FusionInsight-Hive-3.1.0/hive-3.1.0 export HIVE_CONF_DIR=/opt/client/Hive/config export HCAT_HOME=/opt/client/Hive/HCatalog4) 添加系统变量,将SQOOP_HOME添加到PATH中vi /etc/profile添加一下信息:export SQOOP_HOME=/opt/sqoop-1.4.7.bin__hadoop-2.6.0 export PATH=$PATH:$SQOOP_HOME/bin之后加载环境source /etc/profile source /opt/client/bigdata_env从SAP HANA上获取数据导入HDFS从SAP节点的hdbclient文件夹中获取到ngdbc.jar(一般地址为C:\Program Files\SAP\hdbclient),这个是连接SAP HANA系统的驱动程序,将此Jar包放入到Sqoop的lib文件夹里面并更改权限sqoop import \ --username SYSTEM \ --password **** \ --connect jdbc:sap://192.168.0.100:30215/?currentschema=SYSTEM \ --driver com.sap.db.jdbc.Driver \ --table test02 \ --m 1 \ --target-dir /tmp/test06--username      SAP HANA用户 --password      SAP HANA密码 --connect       SAP连接地址和端口 --driver        驱动器加载类 --table         表名 --m 1           进程数 --target-dir    HDFS数据存储地址运行完成后,去查看HDFS上的数据:从SAP HANA上获取数据导入HIVE从SAP节点的hdbclient文件夹中获取到ngdbc.jar(一般地址为C:\Program Files\SAP\hdbclient),这个是连接SAP HANA系统的驱动程序,将此Jar包放入到Sqoop的lib文件夹里面并更改权限sqoop import \ --username SYSTEM \ --password **** \ --connect jdbc:sap://192.168.0.100:30215/?currentschema=SYSTEM \ --driver com.sap.db.jdbc.Driver \ --table TEST01 \ --m 1 \ --hive-import \ --direct--username       SAP HANA用户 --password       SAP HANA密码 --connect        SAP连接地址和端口 --driver         驱动器加载类 --table          表名 --m 1            进程数 --hive-import    导入到hive中 --direct进入beeline查看hive表是否已导入select * from test01;常见报错信息:1、如果报找不到类:jline.console.completer.ArgumentCompleter需要将缺少的jar包添加到Sqoop的lib文件夹中cp /opt/share/jline-2.12/jline-2.12.jar /opt/sqoop/sqoop-1.4.7.bin__hadoop-2.6.0/lib/2、如果报一下错误:TEST01表已存在,则需要将TEST01表存储地址先删除或者改名(改表名)其他问题:1、表名中不能有 “.” (不能使用default.test01这样的表名),如果需要指定库,则在连接地址后添加参数currentschema=SYSTEM--connect jdbc:sap://192.168.0.100:30215/?currentschema=SYSTEM \2、如果SAP数据类型转换成HDFS数据类型的时候没有合适的类型,则需要将类型改为更简单的数据类型3、目前测试的是普通集群,安全集群是否有认证问题还未测试
  • [技术干货] BLU无法访问Hadoop
    现象描述BLU无法访问FusionInsight HD集群服务组件,无法正常提供服务。可能原因FusionInsight Farmer集群与FusionInsight HD集群的系统时间偏差超过5分钟。定位思路检查FusionInsight Farmer集群和FusionInsight HD集群的时间偏差是否超过5分钟。恢复该故障大约需要10分钟。处理步骤登录FusionInsight Manager。在浏览器地址栏中,输入FusionInsight Manager的网络地址。地址格式为“http://FusionInsight Manager系统的WebService浮动IP地址:8080/web”。选择“Services > More Actions > Stop cluster”,停止FusionInsight Farmer集群服务。使用PuTTY登录FusionInsight Farmer集群的主管理节点,执行su - omm命令切换到omm用户。执行如下命令,使FusionInsight Farmer集群同步FusionInsight HD集群的时间。例如,192.168.10.11是FusionInsight HD集群主管理节点的IP地址。/opt/huawei/Bigdata/om-0.0.1/bin/tools/modifyntp.sh --ntp_server_ip 192.168.10.11 --force_sync_time登录FusionInsight Manager,选择“Services > More Actions > Start cluster”,启动FusionInsight Farmer集群。
  • [产品体验官] 华为云MapReduce体验及测评——开箱即用,如此简单
    华为云MapReduce体验及测评                                                                                                                                                                                                ----泠影        如果读到本文的有缘人比较忙,直接看摘要即可。        第一部分内容仅为吐槽,和MRS无关,仅仅吐槽发帖而已。        在测评写这个之前,先吐槽一波这个云社区的论坛,不能忍受的是发帖的时候不能自动保存,不给自动保存就算了,连手动的也没,更难受的是昨天晚上点击发帖,然后要重新登录,但是重新登录之后,发现什么都没有了,辛辛苦苦写的东西都没有了, 不过会提示系统保存有你的数据,让你选择删除或者恢复,瞬间好多了,可是,问题是,点击恢复数据的时候,提示你没有要恢复的数据,麻耶,简直就是天堂地狱一日游,我能怎么办,我也很绝望呀后来在群里交流,有热心人的过来人告诉我经验,可以在重大操作之前在开一个窗口,把内容复制过去,如果数据丢失了,就重新保存回来,难道发个帖子都要用到就是传说中的副本机制,冗余备份了吗(手动无奈)。        好了吐槽了一波,心里开心好受多了,接着干活,接着水,咳咳,是接着写哈,接着测评哈。        第二次挂掉,这是是在调图片的时候,发现双击一下,会全屏显示但是,怎么也回不来了,esc不管用,只能管窗口 ,重新来了,有点忍不住想报粗口,真的 忍不住。        再吐槽,点了回复之后,跳出了这样的界面,这个实在嫌弃我的电脑屏幕小吗?真的找不到关闭的地方啊,滚动页面的时候,弹出的页面也不会动啊。正文        一、摘要        个人感觉华为的MRS有很多的优点,也有很多缺点,但是由于这个是测评之后提意见改进的,所以着重说下缺点(勿怪勿怪),MapReduce采用的不知道是来自于华为的FusionInsight,还是Apache的开源项目,但是使用的应该是hadoop2.7的版本,在好奇为什么不用hadoop3.0以后的版本呢,据说(我没做过测评),hadoop3.0以后的版本性能有着非常大的提升(老师说可以超过10倍以上),虽然怀疑数据,但是肯定有很明显的提升的。另外呢,买了服务器之后,Xshell远程连接上去,发现除了java没有添加环境变量意外,其他的进程都跑起来了,虽然这样可以减去搭建的麻烦,但是不符合个人布置集群的习惯和企业团队的规范,还有Xshell远程连接一段时间,出现了网络超时,连接断开了,不过这个远程的服务器,关系不大,但是还是有点影响用户习惯的,最后就是在新手文档里下载hadoop2.7.4,但是连接给出的镜像没有hadoop2.7.4,下载其他的也可以使用,不过看下载的路径是Apache的,不知道为什么不选用华为镜像站的,既可以宣传一下,而且国内的站点下载速度是快,用户体验更好。当然,华为的也有更多的优点,对新手更加友好,集群直接搭建成功,有操作的web页面,直接点点点就可以跑一个实例。文档是中文的,很开心,很nice,一看就懂,一做就对的那种。        二、关键字        MRS、新手友好、开箱即用、界面简单、文档易懂、不利于规范部署        三、体验过程        (1)初识服务器,集群已经搭建,但不利于自定义部署。        拿到服务器第一件事情,Xshell直接连接上去,cat /etc/redhat-release 查看系统版本EulerOS release 2.0 (SP2)没有遇到过,但是命令和centos一样,好评,然后查看hosts文件,顺利登陆其他的服务器,然后jps查看java进程,发现没有jps命令,以为是Java没有装呢(其实是Java的环境变量没有配置),然后就tree看看目录结构,看下是否已经有软件包了,(虽然没有tree命令,但是yum源配置 好的,可以直接使用,nice)。发现有很多软件包都存在,在/opt/Bigdata目录下,Java也在,也知道了Java环境变量没有配置,配置之后,敲jps命令本来是看环境变量配置的有没有问题,但是回车之后,惊呆了,一大堆进程,仔细看下,会发现集群所需的进程都启动了,这点算是 好评吧,但是这么多进程启动说明配置文件都写好了,不利于已经有集群基础项目的统一部署,可能会给运维带来一定负担吧,但是对于我们这样小白还是十分友好的。想想自己以前第一次部署hadoop或者考大数据证的时候部署FusionInsight,都是一天多的时间才部署好,真笨,也真可怕,哈哈。        (2)新手文档超好用,但是连接为什么不指向华为开源镜像站呢        新手文档真的很nice,中文文档,让我这个英语小白开心了很久很久,还依稀apache的英语文档给我造成的伤害,谷歌翻译都救不了的那种。但是这个是中文,而且逻辑很容易让人理解,加上还有视频的讲解(虽然我没有看视频),但是觉得肯定不会差。另外唯一不怎么好的一点就是,“Step4 准备Hadoop样例程序及数据文件”(具体内容如下)的时候跑的下载的hadoop源是apache的,为什么不指向华为镜像站的呢,一方面可以做一下宣传,另外国内的站点速度更快,用户体验更好,下面的图第一个是华为镜像站下载的,另外的是新手文档里的连接下载的(宿舍网速不好,最快也就两三兆那样)。另外就是有一处错误吧,原文提到“Step4 准备Hadoop样例程序及数据文件① 准备wordcount程序。可以从 这里 下载Hadoop样例程序(包括wordcount)。 例如选择hadoop-2.7.4.tar.gz,解压后在“hadoop-2.7.4\share\hadoop\mapreduce”路径下获取“hadoop-mapreduce-examples-2.7.4.jar”,即为Hadoop的样例程序。"但是链接里没有2.7.4,我选择了其他的版本代替,也不影响使用,不过如果可以的话,最好还是更改一下。        (3)web页面,简洁大方,功能齐全,        对比apache的界面,我更加喜欢华为云的,一个是功能十分强大,里面的集群监控,数据等可以图像显示,另外 就是在提交作业,管理文件系统的时候也十分简单,完全不用理解底层的东西,直接使用就可以了,真正的开箱即用,另外可以增加邮箱警报,短信警报更好,如果短信的内容可以更加的简洁那更好了,可以降低成本(虽然短信没多少钱),但是我们公司确实在做这样的事情,简化ZABBIX的报警短信,降低成本(一次报警内容相当于3条短信原来)。        (4)网络超时(这个很尬尴,我不能确定是我自己的网络问题,还是服务器的)        这个不是重点,Xshell连接服务器的时候发现网络超时断开过两次,不确定是长时间没有操作还是其他的什么原因,因为上次体验华为镜像站的时候因为自己网络的原因可能会给网站技术人员带来麻烦了,这个网络的事情,真的不太确定,那就先这样吧,配个图算了。        四、整体效果        (1)操作体验        能够顺畅的创建集群,提交作业,跑组建的样例程序,我使用的是web的界面操作的,感觉对新手非常友好,比apache的使用命令行的形式方便了很多,而且免除了搭建环境这一步,对新手非常友好。        (2)性能        在使用的过程中使用了HDFS MapReduce组件,因为测试的文本太小了,进程启动占的时间远比计算的时间要长,所以不方便多说,而且自己以前搭建的CDH和apache下的和这个硬件都不一样,更不好对比。        (3)功能特性        监控方便,虽然十分的好用了,但是CDH的监控相比,CDH可以自定义监控的内容,也可以监控保存十分的方便(好像可以设置邮件报警,记不清楚了),比这个更好一点(我个人觉得应该也可以设置报警的,可能是我没有找到),另外就是CDH的添加组件十分方便,只需要点点点即可,删除也是这样,感觉部署集群起来十分方便,而华为云的已经部署好了,就这两个各有优劣吧。        (4)满意度及推广度        作为一个小白,对这个是感觉十分友好,开箱即用,基本上看下文档就可以直接跑样例了,如果我个人有项目需要跑的话,应该会选择本地的虚拟机可能性更大一点,并不是应为这个系统不好,而是自己一个穷学生没钱,当然也不是这个贵,毕竟服务器,技术支持都需要成本,我所了解的ELK的云服务也不便宜。如果是我现在实习的公司的项目,可能回吧,但是更有可能是优先本地部署吧,毕竟公司有蛮多服务器的。如果是小公司的话,不愿意在起初的时候投入高成本购买服务器的话,华为云也是一个很不错的选择,毕竟第一私有云不是闹着玩呢。                                                                                                                                                                                        上海~昌硕~泠影