一、前置环境要求
- 直接使用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.youkuaiyun.com/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.youkuaiyun.com/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.youkuaiyun.com/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。