编译hadoop2.6.0-cdh5.7.0源码使其支持压缩

一、前置环境要求

二、数仓项目作业

一、前置环境要求

  • 直接使用hadoop2.6.0-cdh5.7.0.tar.gz的包部署的hadoop集群在生产上是不支持压缩的,生产上的hadoop是需要使用压缩的,故需要下载hadoop的源码编译使其支持压缩;
  • 下载hadoop2.6.0-cdh5.7.0-src.tar.gz,使用maven编译,使其支持压缩,并成功进行伪分布式集群部署验证压缩。

说下我部署的环境:CentOS7.X系统的云主机

组件名称下载地址
Hadoop-2.6.0-cdh5.7.0-src.tar.gz链接:https://pan.baidu.com/s/1xJK5AnHUPf3ums1_1l-X0w 提取码:jz5p
jdk-7u80-linux-x64.tar.gz同上
apache-maven-3.3.9-bin.tar.gz
protobuf-2.5.0.tar.gz
repo.tar.gz
  • 写在前言:
    1、不管使用cloudera还是阿里云的仓库来下载文件都是很慢的,提供了前人的repo包直接放在linux本地即可。

关于jar包的下载方式,可以在IDEA中新建项目,在pom.xml中引入dependency依赖让它进行下载即可。

新建一个scala项目,参考这篇博客:https://blog.csdn.net/zhikanjiani/article/details/89421866

在pom.xml中添加如下:

<properties>
    <maven.compiler.source>1.5</maven.compiler.source>
    <maven.compiler.target>1.5</maven.compiler.target>
    <encoding>UTF-8</encoding>
    <scala.version>2.11.8</scala.version>			//添加scala版本
    <hadoop.version>2.6.0-cdh5.16.2</hadoop.version>		//添加hadoop版本
</properties>

//添加cdh的仓库:
<!--添加cdh的仓库-->
  <repositories>
    <repository>
      <id>cloudera</id>
      <url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
    </repository>
  </repositories>

//添加hadoop和scala的依赖
 <!--hadoop的依赖-->
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client</artifactId>
      <version>${hadoop.version}</version>
    </dependency>

    <!--Scala的依赖-->
    <dependency>
      <groupId>org.scala-lang</groupId>
      <artifactId>scala-library</artifactId>
      <version>${scala.version}</version>
    </dependency>

在settings中配置一个IDEA的windows本地maven下载路径:通过file --> settings,搜索找到Maven:修改maven的本地仓库路径即可。
在这里插入图片描述

1.1、部署jdk

1、创建java的存储目录:
mkdir -p /usr/java

2、rz上传文件到这个目录,进行解压,解压后查看用户名和用户组是否需要进行变更:
tar -xzvf xxx

3、配置环境变量:
#export JAVA_HOME=/usr/java/jdk1.8.0_45
export JAVA_HOME=/usr/java/jdk1.7.0_80
export PATH=$JAVA_HOME/bin:$PATH

4、生效环境变量即可:
source /etc/profile

1.2、部署Maven

1、同样的解压Maven:

2、配置环境变量:
export MAVEN_HOME=/home/hadoop/app/maven
export PATH=$PATH:$MAVEN_HOME/bin

3、生效环境变量并且进行查看:
source /etc/profile
mvn -v
  • 配置Maven的conf中的settings.xml文件(主要是一个本地仓库的配置&&镜像源的配置)
1、vi [hadoop@sz5i5j-01 app]$ vi maven/conf/settings.xml 

2、本地仓库路径配置&&镜像源的配置:
56行: <localRepository>/home/hadoop/maven_repo/repo</localRepository>
注:/home/hadoop/maven_repo/这个目录下的repo文件夹就是上面我们提供的

镜像源配置的位置:161-191行左右:
<mirror>
      <id>alimaven</id>
       <name>aliyun maven</name>
           <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
       <mirrorOf>central</mirrorOf>
    </mirror>
<mirror>
         <id>jboss-public-repository-group</id>
         <mirrorOf>central</mirrorOf>
         <name>JBoss Public Repository Group</name>
         <url>http://repository.jboss.org/nexus/content/groups/public</url>
     </mirror>
     <mirror>
         <id>ibiblio</id>
         <mirrorOf>central</mirrorOf>
         <name>Human Readable Name for this Mirror.</name>
         <url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
     </mirror>
     <mirror>
         <id>central</id>
         <name>Maven Repository Switchboard</name>
        <url>http://repo1.maven.org/maven2/</url>
         <mirrorOf>central</mirrorOf>
     </mirror>
     <mirror>
         <id>repo2</id>
         <mirrorOf>central</mirrorOf>
        <name>Human Readable Name for this Mirror.</name>
         <url>http://repo2.maven.org/maven2/</url>
     </mirror>

1.3、部署Protobuf

1、同样的进行解压:

2、进入protobuf目录进行./configure
[hadoop@sz5i5j-01 protobuf-2.5.0]$ ./configure

3、进行安装:
[hadoop@sz5i5j-01 protobuf-2.5.0]$ make && make install

4、同样的配置环境变量&&生效环境变量&&查看版本号:
export PROTOBUF_HOME=/home/hadoop/app/protobuf-2.5.0
export PATH=$PROTOBUF_HOME/bin:$PATH

source /etc/profile

[hadoop@sz5i5j-01 protobuf-2.5.0]$ protoc --version
libprotoc 2.5.0

1.4、解压Hadoop源码包

直接一句命令进行编译:

  • mvn package -DskipTests -Pdist,native -Dtar -Drequire.snappy -e -X
  • mvn package -DskipTests -Pdist,native -Dtar

可能会出现的错误:就是疯狂编译失败,提示XXX包无法下载,但是根据它提供的地址,又是可以wget下载下来的,也不可能一个一个包的去进行下载:想编译新版本的hadoop失败了,hadoop2.6.0-cdh5.7.0失败。

  • 何时成功?
  • 当出现BUILD SUCCESS时就是编译成功了
检查是否支持压缩:
1、如下这个路径是我自己编译的路径,在target这个目录下有一个tar的压缩包:
[hadoop@sz5i5j-01 bin]$ pwd
/home/hadoop/sourcecode/hadoop-2.6.0-cdh5.7.0/hadoop-dist/target/hadoop-2.6.0-cdh5.7.0/bin
[hadoop@sz5i5j-01 target]$ ll
total 566244
drwxrwxr-x 2 hadoop hadoop      4096 May  9 15:56 antrun
drwxrwxr-x 3 hadoop hadoop      4096 May  9 15:56 classes
-rw-rw-r-- 1 hadoop hadoop      2002 May  9 18:09 dist-layout-stitching.sh
-rw-rw-r-- 1 hadoop hadoop       694 May  9 18:09 dist-tar-stitching.sh
drwxrwxr-x 9 hadoop hadoop      4096 May  9 18:09 hadoop-2.6.0-cdh5.7.0
-rw-rw-r-- 1 hadoop hadoop 192544202 May  9 18:09 hadoop-2.6.0-cdh5.7.0.tar.gz


2、检查是否支持压缩:
[hadoop@sz5i5j-01 bin]$ ./hadoop checknative
20/05/10 18:42:49 INFO bzip2.Bzip2Factory: Successfully loaded & initialized native-bzip2 library system-native
20/05/10 18:42:49 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library
Native library checking:
hadoop:  true /home/hadoop/sourcecode/hadoop-2.6.0-cdh5.7.0/hadoop-dist/target/hadoop-2.6.0-cdh5.7.0/lib/native/libhadoop.so.1.0.0
zlib:    true /lib64/libz.so.1
snappy:  true /lib64/libsnappy.so.1
lz4:     true revision:99
bzip2:   true /lib64/libbz2.so.1
openssl: true /lib64/libcrypto.so

二、重新进行部署hadoop

  • 参考博客:https://blog.csdn.net/SparkOnYarn/article/details/104997202
配置Hadoop
1、解压:
[hadoop@sz5i5j-01 target]$ tar -xzvf hadoop-2.6.0-cdh5.7.0.tar.gz -C /home/hadoop/app/

2、配置java的环境目录:
vi hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_45

3、配置core-site.xml
<property>
        <name>fs.defaultFS</name>
        <value>hdfs://sz5i5j-01:9000</value>
    </property>

        <property>
                <name>hadoop.tmp.dir</name>
                <value>/home/hadoop/tmp</value>
        </property>

        <property>
                <name>fs.trash.interval</name>
                <value>100</value>
        </property>
        <property>
                <name>io.compression.codecs</name>
                <value>org.apache.hadoop.io.compress.GzipCodec,
                org.apache.hadoop.io.compress.DefaultCodec,
                org.apache.hadoop.io.compress.BZip2Codec,</value>
        </property>

3、配置hdfs-site.xml
<property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>

<property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>szi5j-01:50090</value>
    </property>

    <property>
        <name>dfs.namenode.secondary.https-address</name>
        <value>szi5j-01:50091</value>
    </property>

4、ssh无密码访问

5、NameNode节点的初始化:
bin/hdfs namenode -format
20/05/10 19:26:44 INFO common.Storage: Storage directory /home/hadoop/tmp/dfs/name has been successfully formatted.

如下表示已经成功初始化
配置Yarn:
1、配置mapred-site.xml,没有这个文件直接copy一份即可:
<property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>

<property>
                <name>mapreduce.output.fileoutputformat.compress</name>
                <value>true</value>
        </property>
        <property>
                <name>mapreduce.output.fileoutputformat.compress.codec</name>
                <value>org.apache.hadoop.io.compress.BZip2Codec</value>
        </property>

2、配置yarn-site.xml
<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

        <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>hadoop002:38088</value>
    </property>

启动hadoop和yarn:
出现的问题:datanode无法启动,参考博客:https://blog.csdn.net/u013129944/article/details/78604651

说是VERSION中的CLUSTER_ID不一致,手动进行修改替换:

[hadoop@sz5i5j-01 current]$ cat VERSION 
#Wed May 06 14:50:05 CST 2020
namespaceID=1232016091
clusterID=CID-892d327f-1a06-4754-9bbd-7d53d0173642
cTime=0
storageType=NAME_NODE
blockpoolID=BP-210227996-172.19.107.177-1587726607596
layoutVersion=-60
[hadoop@sz5i5j-01 current]$ pwd
/home/hadoop/tmp/dfs/namesecondary/current

部署完成okay。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值