hadoop离线阶段(第五节)hadoop伪分布式环境、分布式环境搭建和CDH版本搭建

1300-黄同学

发表文章数:85

热门标签

首页 » 大数据 » 正文

伪分布式环境搭建

伪分布式环境原理

由于伪分布式与standAlone差别不大,NameNode和ResourceManager都部署在同一台机器上,区别仅仅在于伪分布式环境需要加入一些机器来分配DataNode和NodeManager。所以只要把其他机器加入集群,其余配置和standAlone环境搭建一样就可以搭建伪分布式环境了。

伪分布式环境搭建步骤

1、停止当前的hadoop服务

cd /export/servers/hadoop-2.7.5
sbin/stop-dfs.sh
sbin/stop-yarn.sh
sbin/mr-jobhistory-daemon.sh stop historyserver

2、删除hadoopDatas然后重新创建文件夹

#删除hadoopDatas
rm  -rf  /export/servers/hadoop-2.7.5/hadoopDatas
#重新创建文件夹
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/tempDatas
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/namenodeDatas
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/namenodeDatas2
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/datanodeDatas
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/datanodeDatas2
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/nn/edits
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/snn/name
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/dfs/snn/edits

3、修改slaves文件,改为如下:
hadoop离线阶段(第五节)hadoop伪分布式环境、分布式环境搭建和CDH版本搭建
4、分发安装包

scp -r /export/servers/hadoop-2.7.5 node02:/export/servers
scp -r /export/servers/hadoop-2.7.5 node03:/export/servers

启动伪分布式集群

在部署NameNode和ResourceManager的机器执行

cd  /export/servers/hadoop-2.7.5
bin/hdfs namenode -format #只有首次启动才需要执行,目的是格式化hadoop的数据目录
sbin/start-dfs.sh
sbin/start-yarn.sh
sbin/mr-jobhistory-daemon.sh start historyserver

分布式环境搭建

分布式环境搭建介绍

这是介绍的是NameNode和ResourceManager的高可用分布式环境搭建。由于只有三台实验机器,所以有一台机器需要同时担任NameNode和ResourceManager的stanby角色。以下是具体的部署方案。
hadoop离线阶段(第五节)hadoop伪分布式环境、分布式环境搭建和CDH版本搭建

分布式环境搭建步骤

1、使用jps分别查看三台机器的关于hadoop的进程,并且使用kill -9 进程号把这些进程全部杀掉
2、3台机器上的hadoop安装目录全部删除
3、重新解压node01上的hadoop的tar包到安装目录
4、修改配置文件
①修改core-site.xml,具体修改如下:

<configuration>
<!-- 指定NameNode的HA高可用的zk地址  -->
	<property>
		<name>ha.zookeeper.quorum</name>
		<value>node01:2181,node02:2181,node03:2181</value>
	</property>
 <!-- 指定HDFS访问的域名地址  -->
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://ns</value> <!-- ns是集群名称,可以自己定义 -->
	</property>
 <!-- 临时文件存储目录  -->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/export/servers/hadoop-2.7.5/data/tmp</value>
	</property>
	 <!-- 开启hdfs垃圾箱机制,指定垃圾箱中的文件七天之后就彻底删掉
			单位为分钟
	 -->
	<property>
		<name>fs.trash.interval</name>
		<value>10080</value>
	</property>
</configuration>

注意,fs.defaultFS的配置不再是某个机器的ip地址加端口号了,因为现在NameNode和ResourceManager都需要分布到不同的机器上了,所以这里直接用集群名称代替了某台机器,集群名称可以自己定义,这里定义为ns

②修改hdfs-site.xml,具体修改如下:

<configuration>
<!--  指定命名空间  -->
	<property>
		<name>dfs.nameservices</name>
		<value>ns</value>
	</property>
<!--  指定该命名空间下的两个机器作为我们的NameNode  -->
	<property>
		<name>dfs.ha.namenodes.ns</name>
		<value>nn1,nn2</value>
	</property>

	<!-- 配置第一台服务器的namenode通信地址  -->
	<property>
		<name>dfs.namenode.rpc-address.ns.nn1</name>
		<value>node01:8020</value>
	</property>
	<!--  配置第二台服务器的namenode通信地址  -->
	<property>
		<name>dfs.namenode.rpc-address.ns.nn2</name>
		<value>node02:8020</value>
	</property>
	<!-- 所有从节点之间相互通信端口地址 -->
	<property>
		<name>dfs.namenode.servicerpc-address.ns.nn1</name>
		<value>node01:8022</value>
	</property>
	<!-- 所有从节点之间相互通信端口地址 -->
	<property>
		<name>dfs.namenode.servicerpc-address.ns.nn2</name>
		<value>node02:8022</value>
	</property>
	
	<!-- 第一台服务器namenode的web访问地址  -->
	<property>
		<name>dfs.namenode.http-address.ns.nn1</name>
		<value>node01:50070</value>
	</property>
	<!-- 第二台服务器namenode的web访问地址  -->
	<property>
		<name>dfs.namenode.http-address.ns.nn2</name>
		<value>node02:50070</value>
	</property>
	
	<!-- journalNode的访问地址,注意这个地址一定要配置 -->
	<property>
		<name>dfs.namenode.shared.edits.dir</name>
		<value>qjournal://node01:8485;node02:8485;node03:8485/ns1</value>
	</property>
	<!--  指定故障自动恢复使用的哪个java类 -->
	<property>
		<name>dfs.client.failover.proxy.provider.ns</name>
		<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
	</property>
	
	<!-- 故障转移使用的哪种通信机制 -->
	<property>
		<name>dfs.ha.fencing.methods</name>
		<value>sshfence</value>
	</property>
	
	<!-- 指定通信使用的公钥
	注意,如果集群是用普通用户搭建,那么这里需要指定为普通用户的私钥地址  -->
	<property>
		<name>dfs.ha.fencing.ssh.private-key-files</name>
		<value>/root/.ssh/id_rsa</value>
	</property>
	<!-- journalNode数据存放地址  -->
	<property>
		<name>dfs.journalnode.edits.dir</name>
		<value>/export/servers/hadoop-2.7.5/data/dfs/jn</value>
	</property>
	<!-- 启用自动故障恢复功能 -->
	<property>
		<name>dfs.ha.automatic-failover.enabled</name>
		<value>true</value>
	</property>
	<!-- namenode产生的文件存放路径 -->
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:///export/servers/hadoop-2.7.5/data/dfs/nn/name</value>
	</property>
	<!-- edits产生的文件存放路径 -->
	<property>
		<name>dfs.namenode.edits.dir</name>
		<value>file:///export/servers/hadoop-2.7.5/data/dfs/nn/edits</value>
	</property>
	<!-- dataNode文件存放路径 -->
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>file:///export/servers/hadoop-2.7.5/data/dfs/dn</value>
	</property>
	<!-- 关闭hdfs的文件权限 -->
	<property>
		<name>dfs.permissions</name>
		<value>false</value>
	</property>
	<!-- 指定block文件块的大小,128M -->
	<property>
		<name>dfs.blocksize</name>
		<value>134217728</value>
	</property>
</configuration>

③修改hdfs-site.xml,具体修改如下:

<configuration>
	<!-- 启用日志聚合功能,应用程序完成后,收集各个节点的日志到一起便于查看 -->
	<property>
		<name>yarn.log-aggregation-enable</name>
		<value>true</value>
	</property>

	<!--开启resource manager HA,默认为false--> 
	<property>
		<name>yarn.resourcemanager.ha.enabled</name>
		<value>true</value>
	</property>
	<!-- 集群的Id,使用该值确保RM不会做为其它集群的active -->
	<property>
		<name>yarn.resourcemanager.cluster-id</name>
		<value>mycluster</value>
	</property>
	<!--配置resource manager  命名-->
	<property>
		<name>yarn.resourcemanager.ha.rm-ids</name>
		<value>rm1,rm2</value>
	</property>
	<!-- 配置第一台机器的resourceManager -->
	<property>
		<name>yarn.resourcemanager.hostname.rm1</name>
		<value>node03</value>
	</property>
	<!-- 配置第二台机器的resourceManager -->
	<property>
		<name>yarn.resourcemanager.hostname.rm2</name>
		<value>node02</value>
	</property>

	<!-- 配置第一台机器的resourceManager通信地址 -->
	<property>
		<name>yarn.resourcemanager.address.rm1</name>
		<value>node03:8032</value>
	</property>
	<!-- 配置第一台机器的resourceManager任务调度的地址 -->
	<property>
		<name>yarn.resourcemanager.scheduler.address.rm1</name>
		<value>node03:8030</value>
	</property>
	<!-- 配置第一台机器的resourceManager资源定位追踪的地址 -->
	<property>
		<name>yarn.resourcemanager.resource-tracker.address.rm1</name>
		<value>node03:8031</value>
	</property>
	<!-- 配置第一台机器的resourceManager的管理地址 -->
	<property>
		<name>yarn.resourcemanager.admin.address.rm1</name>
		<value>node03:8033</value>
	</property>
	<!-- 配置第一台机器的resourceManager的web界面地址 -->
	<property>
		<name>yarn.resourcemanager.webapp.address.rm1</name>
		<value>node03:8088</value>
	</property>

	<!-- 配置第二台机器的resourceManager通信地址 -->
	<property>
		<name>yarn.resourcemanager.address.rm2</name>
		<value>node02:8032</value>
	</property>
	<!-- 配置第二台机器的resourceManager任务调度的地址 -->
	<property>
		<name>yarn.resourcemanager.scheduler.address.rm2</name>
		<value>node02:8030</value>
	</property>
	<!-- 配置第二台机器的resourceManager资源定位追踪的地址 -->
	<property>
		<name>yarn.resourcemanager.resource-tracker.address.rm2</name>
		<value>node02:8031</value>
	</property>
	<!-- 配置第二台机器的resourceManager的管理地址 -->
	<property>
		<name>yarn.resourcemanager.admin.address.rm2</name>
		<value>node02:8033</value>
	</property>
	<!-- 配置第二台机器的resourceManager的web界面地址 -->
	<property>
		<name>yarn.resourcemanager.webapp.address.rm2</name>
		<value>node02:8088</value>
	</property>
	<!--开启resourcemanager自动恢复功能-->
	<property>
		<name>yarn.resourcemanager.recovery.enabled</name>
		<value>true</value>
	</property>
	<!--在node1上配置rm1,在node2上配置rm2,注意:一般都喜欢把配置好的文件远程复制到其它机器上,但这个在YARN的另一个机器上一定要修改,其他机器上不配置此项-->
	<property>       
		<name>yarn.resourcemanager.ha.id</name>
		<value>rm1</value>
	   <description>If we want to launch more than one RM in single node, we need this configuration</description>
	</property>
	   
	   <!--用于持久存储的类。尝试开启-->
	<property>
		<name>yarn.resourcemanager.store.class</name>
		<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
	</property>
	<property>
		<name>yarn.resourcemanager.zk-address</name>
		<value>node02:2181,node03:2181,node01:2181</value>
		<description>For multiple zk services, separate them with comma</description>
	</property>
	<!--开启resourcemanager故障自动切换,指定机器--> 
	<property>
		<name>yarn.resourcemanager.ha.automatic-failover.enabled</name>
		<value>true</value>
		<description>Enable automatic failover; By default, it is enabled only when HA is enabled.</description>
	</property>
	<property>
		<name>yarn.client.failover-proxy-provider</name>
		<value>org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider</value>
	</property>
	<!-- 允许分配给一个任务最大的CPU核数,默认是8 -->
	<property>
		<name>yarn.nodemanager.resource.cpu-vcores</name>
		<value>4</value>
	</property>
	<!-- 每个节点可用内存,单位MB -->
	<property>
		<name>yarn.nodemanager.resource.memory-mb</name>
		<value>512</value>
	</property>
	<!-- 单个任务可申请最少内存,默认1024MB -->
	<property>
		<name>yarn.scheduler.minimum-allocation-mb</name>
		<value>512</value>
	</property>
	<!-- 单个任务可申请最大内存,默认8192MB -->
	<property>
		<name>yarn.scheduler.maximum-allocation-mb</name>
		<value>512</value>
	</property>
	<!--多长时间聚合删除一次日志 此处-->
	<property>
		<name>yarn.log-aggregation.retain-seconds</name>
		<value>2592000</value><!--30 day-->
	</property>
	<!--时间在几秒钟内保留用户日志。只适用于如果日志聚合是禁用的-->
	<property>
		<name>yarn.nodemanager.log.retain-seconds</name>
		<value>604800</value><!--7 day-->
	</property>
	<!--指定文件压缩类型用于压缩汇总日志-->
	<property>
		<name>yarn.nodemanager.log-aggregation.compression-type</name>
		<value>gz</value>
	</property>
	<!-- nodemanager本地文件存储目录-->
	<property>
		<name>yarn.nodemanager.local-dirs</name>
		<value>/export/servers/hadoop-2.7.5/yarn/local</value>
	</property>
	<!-- resourceManager  保存最大的任务完成个数 -->
	<property>
		<name>yarn.resourcemanager.max-completed-applications</name>
		<value>1000</value>
	</property>
	<!-- 逗号隔开的服务列表,列表名称应该只包含a-zA-Z0-9_,不能以数字开始-->
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>

	<!--rm失联后重新链接的时间--> 
	<property>
		<name>yarn.resourcemanager.connect.retry-interval.ms</name>
		<value>2000</value>
	</property>
</configuration>

注意,yarn.resourcemanager.ha.id的值在ResourceManager为standby的机器上需要修改为rm2,因为就是通过这个属性将机器和yarn-site.xml中机器代称关联起来,这样集群中才能知道哪个机器是这里的rm1,哪个机器是这里的rm2
④修改mapred-site.xml,具体修改如下:

<configuration>
	<!--指定运行mapreduce的环境是yarn -->
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
	<!-- MapReduce JobHistory Server IPC host:port -->
	<property>
		<name>mapreduce.jobhistory.address</name>
		<value>node03:10020</value>
	</property>
	<!-- MapReduce JobHistory Server Web UI host:port -->
	<property>
		<name>mapreduce.jobhistory.webapp.address</name>
		<value>node03:19888</value>
	</property>
	<!-- The directory where MapReduce stores control files.默认 ${hadoop.tmp.dir}/mapred/system -->
	<property>
		<name>mapreduce.jobtracker.system.dir</name>
		<value>/export/servers/hadoop-2.7.5/data/system/jobtracker</value>
	</property>
	<!-- The amount of memory to request from the scheduler for each map task. 默认 1024-->
	<property>
		<name>mapreduce.map.memory.mb</name>
		<value>1024</value>
	</property>
	<!-- The amount of memory to request from the scheduler for each reduce task. 默认 1024-->
	<property>
		<name>mapreduce.reduce.memory.mb</name>
		<value>1024</value>
	</property>
	<!-- 用于存储文件的缓存内存的总数量,以兆字节为单位。默认情况下,分配给每个合并流1MB,给个合并流应该寻求最小化。默认值100-->
	<property>
		<name>mapreduce.task.io.sort.mb</name>
		<value>100</value>
	</property>

	<!-- 整理文件时用于合并的流的数量。这决定了打开的文件句柄的数量。默认值10-->
	<property>
		<name>mapreduce.task.io.sort.factor</name>
		<value>10</value>
	</property>
	<!-- 默认的并行传输量由reduce在copy(shuffle)阶段。默认值5-->
	<property>
		<name>mapreduce.reduce.shuffle.parallelcopies</name>
		<value>25</value>
	</property>
	<!-- 指定java程序运行的堆内存大小 -->
	<property>
		<name>yarn.app.mapreduce.am.command-opts</name>
		<value>-Xmx1024m</value>
	</property>
	<!-- MR AppMaster所需的内存总量。默认值1536-->
	<property>
		<name>yarn.app.mapreduce.am.resource.mb</name>
		<value>1536</value>
	</property>
	<!-- MapReduce存储中间数据文件的本地目录。目录不存在则被忽略。默认值${hadoop.tmp.dir}/mapred/local-->
	<property>
		<name>mapreduce.cluster.local.dir</name>
		<value>/export/servers/hadoop-2.7.5/data/system/local</value>
	</property>
</configuration>

⑤修改slaves,具体修改如下:
hadoop离线阶段(第五节)hadoop伪分布式环境、分布式环境搭建和CDH版本搭建
⑥修改hadoop-env.sh,具体修改如下:
hadoop离线阶段(第五节)hadoop伪分布式环境、分布式环境搭建和CDH版本搭建
5、分发安装包
在node01机器上执行

cd /export/servers
scp -r hadoop-2.7.5 node02:/export/servers
scp -r hadoop-2.7.5 node03:/export/servers

6、修改计划使ResourceManager为standby状态的node02的yarn-site.xml文件,如图:
hadoop离线阶段(第五节)hadoop伪分布式环境、分布式环境搭建和CDH版本搭建
将rm1改为rm2

启动分布式集群

1、三台机器执行以下命令,来创建hadoop程序的运行数据存放的目录

mkdir -p /export/servers/hadoop-2.7.5/data/dfs/nn/name
mkdir -p /export/servers/hadoop-2.7.5/data/dfs/nn/edits
mkdir -p /export/servers/hadoop-2.7.5/data/dfs/nn/name
mkdir -p /export/servers/hadoop-2.7.5/data/dfs/nn/edits

2、确保zookeeper处于开启状态
①使用jps查看zookeeper的进程是否存在
②不存在的话,则3台机器都执行

cd /export/servers/zookeeper-3.4.9
bin/zkServer.sh start #开启zookeeper服务

③查看zookeeper进程是否存在,进程名为QuorumPeerMain
2、在计划NameNode为acitve的状态的机器node01上执行

cd   /export/servers/hadoop-2.7.5
bin/hdfs zkfc -formatZK #格式化zk
sbin/hadoop-daemons.sh start journalnode #启动journalnode
bin/hdfs namenode –format #格式化namenode上面所有的数据
bin/hdfs namenode -initializeSharedEdits -force #初始化我们元数据信息
sbin/start-dfs.sh #启动hdfs

3、在计划NameNode为standby的状态的机器node02上执行

cd /export/servers/hadoop-2.7.5 #同步元数据信息,并且设置namenode为standBy状态
bin/hdfs namenode -bootstrapStandby
sbin/hadoop-daemon.sh start namenode

4、在计划ResourceManager为active的状态的机器node03上执行

cd  /export/servers/hadoop-2.7.5
sbin/start-yarn.sh #启动yarn

5、在计划ResourceManager为standby的状态的机器node02上执行

cd  /export/servers/hadoop-2.7.5
sbin/start-yarn.sh #启动yarn

6、在部署了jobhistory的node03上执行

cd /export/servers/hadoop-2.7.5
sbin/mr-jobhistory-daemon.sh start historyserver

7、在部署了ResourceManager的node02或node03上执行

cd /export/servers/hadoop-2.7.5
bin/yarn rmadmin -getServiceState rm1 #结果为active
bin/yarn rmadmin -getServiceState rm1 #结果为standby

测试分布式集群的自救功能

1、登录node01:50070,发现是active状态,登录node02:50070,发现是standby状态。
2、登录node03:8088,发现能够登录,登录node02:8088,被自动跳转到node03:8088,说明node02目前是standby的ResourceManager。
3、kill掉node01的NameNode进程,登录node02:50070,发现状态变为active。
4、kill掉node03的ResourceManager进程,登录node02:50070,发现不再跳转,说明现在node02是acitve的ResourceManager。
5、在node01执行sbin/hadoop-daemon.sh start namenode,登录node01:50070,发现是standby状态,说明NameNode的active和stanby状态不是固定的,而是适应于目前的形势的。
6、在node03执行sbin/start-yarn.sh,登录node03:8088,发现被自动跳转到node02:8088,说明现在node02是acitve的ResourceManager,可见ResourceManager的active和stanby状态也不是固定的。

CDH版本hadoop搭建

软件的准备

1、到cloudera网站上找安装包
http://archive.cloudera.com/cdh5/cdh/5/,这是cloudera对于hadoop生态圈的各版本软件的发布网站,主要看CDH后面的版本号,只要各种软件的CDH版本号一样,那么就是兼容性最好的组合。
2、hadoop安装包和hadoop源码包的区别
可以发现cloudera上的hadoop除了有tar.gz的安装包还有src.tar.gz的源码包,因为安装包其实不支持很多本地库所以一般是用源码包,在本地机器上编译后,用编译生成的安装包进行安装
3、hadoop源码包说明文档的使用
下载一个Hadoop的源码包,打开源码包,找到BUILDING.txt这个文件,主要看里面对于编译源码所需要的运行环境的说明。
hadoop离线阶段(第五节)hadoop伪分布式环境、分布式环境搭建和CDH版本搭建
这里交代了源码编译的环境:
首先必须在Linux系统上;
对于JDK的要求最好直接用文档里写的JDK版本,不要使用高于文档中JDK版本的JDK,因为编写源码的人并没有测试过高版本JDK会不会有兼容性问题;
其余的软件也都要符合版本要求,比如maven要求3.0以上,那么就3.0.n的版本就足够,并且兼容性问题不大。
对于本次要编译的hadoop源码包,已经找到了全部需要的软件,如下:
hadoop离线阶段(第五节)hadoop伪分布式环境、分布式环境搭建和CDH版本搭建

hadoop源码包的编译

1、准备专门用于编译机器
准备一台专门用于编译的Linux机器,首先复制一个空的Linux系统,打开系统后、设置mac地址、设置网络适配器、设置主机名、ip与主机名映射后,要注意两点,一是关闭防火墙和防火墙开机自启动,二是设置selinux为disabled,然后把准备好的JDK发送到编译机器上,先卸载系统自带的openJDK再安装JDK,设置环境变量,完成后可以开始后续操作。
2、安装maven
将准备好的maven发送到编译机器,解压安装包到安装目录,然后添加环境变量

vi /etc/profile
export MAVEN_HOME=/export/servers/apache-maven-3.0.5 #在profile中加入
export MAVEN_OPTS="-Xms4096m -Xmx4096m" #在profile中加入
export PATH=:$MAVEN_HOME/bin:$PATH #在profile中加入
source /etc/profile #修改完profile后保存,source以启用更改

3、设置maven
由于事先准备了一个maven仓库,所以先把事先准备的maven仓库发送到编译机器,解压到某目录,获取仓库的路径,然后开始修改maven的settings.xml:

vi /export/servers/apache-maven-3.0.5/conf/settings.xml

作如下修改:
本地库的定义
hadoop离线阶段(第五节)hadoop伪分布式环境、分布式环境搭建和CDH版本搭建
阿里云镜像的设置
hadoop离线阶段(第五节)hadoop伪分布式环境、分布式环境搭建和CDH版本搭建
本地库的定义可以任意指定一个本地的路径,不是一定要事先准备一个maven仓库。
4、安装findbugs
同样,先发送安装包给编译机,然后解压到安装目录,然后添加环境变量就好

export FINDBUGS_HOME=/export/servers/findbugs-1.3.9
export PATH=:$FINDBUGS_HOME/bin:$PATH
source /etc/profile

5、在线安装一些依赖包

yum -y install autoconf automake libtool cmake
yum -y install ncurses-devel
yum -y install openssl-devel
yum -y install lzo-devel zlib-devel gcc gcc-c++
yum -y install bzip2-devel #bzip2-devel的安装包没有事先准备,因为它在linux的应用商店里,网上不好找,而且也不是解压安装,所以这里用yum安装

6、安装protobuf
首先发送安装包给编译机,然后按顺序执行以下命令

cd  /export/softwares
tar -zxvf protobuf-2.5.0.tar.gz -C ../servers/
cd   /export/servers/protobuf-2.5.0
./configure #执行protobuf进行自我配置的脚本
make && make install #进行安装

7、安装snappy
首先发送安装包给编译机,然后按顺序执行以下命令

cd /export/softwares/
tar -zxf snappy-1.1.1.tar.gz  -C ../servers/
cd ../servers/snappy-1.1.1/
./configure #执行snappy进行自我配置的脚本
make && make install #进行安装

8、编译hadoop源码
①发送源码包给编译机,然后解压
②cd到解压后的源码包的目录,执行以下命令的其中一句

mvn package -Pdist,native -DskipTests –Dtar  #编译不支持snappy压缩
mvn package -DskipTests -Pdist,native -Dtar -Drequire.snappy -e -X #编译支持snappy压缩

由于,上面已经安装过snappy,所以是支持snappy的,所以选第二句,然后自动进行编译
9、编译过程中下载tomcat失败处理办法
事先准备一个tomacat6.0.x,如果编译过程中下载tomcat失败,那么把这个事先准备的发送到编译机的/hadoop-2.6.0-cdh5.14.0/hadoop-hdfs-project/hadoop-hdfs-httpfs/downloads
/hadoop-2.6.0-cdh5.14.0/hadoop-common-project/hadoop-kms/downloads,这两个目录下,各一份,然后重新编译。
10、编译完成后,在/hadoop-2.6.0-cdh5.14.0/hadoop-dist/target下可以发现一个hadoop开头的tar.gz文件,这就是编译后的安装包了,然后把这个安装包解压到安装目录,可以进行hadoop的搭建了。

伪分布式CDH版hadoop搭建

和apache版伪分布式搭建步骤一样,都是先解压安装包,然后修改core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml、hadoop-evh.sh、slaves,配置文件的设置除了slaves,其余和standAlone环境的设置一样,详见hadoop离线阶段(第四节)hadoop简介和hadoop的standAlone环境搭建,slaves只是把集群需要用到的机器的计算名全部加入即可。
在以上步骤完成后,将安装文件用scp发给node02和node03,然后添加hadoop的环境变量。3台机器都需要配置环境变量,具体环境变量设置如下:

export HADOOP_HOME=/export/servers/hadoop-2.6.0-cdh5.14.0
export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

在完成hadoop的环境变量设置后,可以不用cd到hadoop的目录,也不用在bin/或者sbin/,就可以使用hadoop的命令了。

CDH版本zookeeper搭建和使用

CDH版本zookeeper搭建和使用与apache版本无异,伪分布式或者分布式环境也不影响zookeeper的搭建和使用,具体的zookeeper搭建和使用详见hadoop离线阶段(第三节)zookeeper概念、安装和基本使用
`

标签:

未经允许不得转载:作者:1300-黄同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《hadoop离线阶段(第五节)hadoop伪分布式环境、分布式环境搭建和CDH版本搭建》 发布于2020-11-07

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录