HDFS 高可用(HA)分布式集群安装部署(CDH)

详尽的视频讲解,请查看该地址:https://edu.csdn.net/course/detail/9572

1.下载Hadoop安装包

Apache版本下载地址:https://archive.apache.org/dist/hadoop/common/

CDH版本下载地址:http://archive-primary.cloudera.com/cdh5/cdh/5/

这里下载hadoop-2.6.0-cdh5.10.0.tar.gz版本安装包,并上传至主节点(hadoop01)/home/hadoop/app目录下。

2.解压Hadoop

通过tar -zxvf命令对Hadoop安装包进行解压即可。

tar -zxvf hadoop-2.6.0-cdh5.10.0.tar.gz 

解压完成之后,然后删除Hadoop安装包。

rm -rf hadoop-2.6.0-cdh5.10.0.tar.gz 

3.创建软连接

为了方便版本的更换和学习使用,可以创建hadoop软连接指向hadoop真实安装路径。

具体操作命令如下所示:

ln -s hadoop-2.6.0-cdh5.10.0 hadoop 

4.修改配置文件

4.1修改core-site.xml

<configuration>
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://mycluster</value>
	</property>
	<!--默认的HDFS路径-->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/home/hadoop/data/tmp</value>
	</property>
	<!--hadoop的临时目录,如果需要配置多个目录,需要逗号隔开-->
	<property>
	<name>ha.zookeeper.quorum</name>
	<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
	</property>
	<!--配置Zookeeper 管理HDFS-->
</configuration>

4.2修改hdfs-site.xml

<configuration>
	<property>
                <name>dfs.replication</name>
                <value>3</value>
        </property>
		<!--数据块副本数为3-->
	<property>
                <name>dfs.permissions</name>
                <value>false</value>
        </property>
	<property>
                <name>dfs.permissions.enabled</name>
                <value>false</value>
        </property>
		<!--权限默认配置为false-->
	<property>
                <name>dfs.nameservices</name>
                <value>mycluster</value>
        </property>
		<!--命名空间,它的值与fs.defaultFS的值要对应,namenode高可用之后有两个namenode,mycluster是对外提供的统一入口-->
	<property>
                <name>dfs.ha.namenodes.mycluster</name>
                <value>nn1,nn2</value>
        </property>
		<!-- 指定 nameService 是 mycluster时的nameNode有哪些,这里的值也是逻辑名称,名字随便起,相互不重复即可-->
        <property>
                <name>dfs.namenode.rpc-address.mycluster.nn1</name>
                <value>hadoop01:9000</value>
        </property>
        <property>
                <name>dfs.namenode.http-address.mycluster.nn1</name>
                <value>hadoop01:50070</value>
        </property>
	<property>
                <name>dfs.namenode.rpc-address.mycluster.nn2</name>
                <value>hadoop02:9000</value>
        </property>
        <property>
                <name>dfs.namenode.http-address.mycluster.nn2</name>
                <value>hadoop02:50070</value>
        </property>
	<property>
                <name>dfs.ha.automatic-failover.enabled</name>
                <value>true</value>
        </property>
		<!--启动故障自动恢复-->
        <property>
                <name>dfs.namenode.shared.edits.dir</name>
                <value>qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/mycluster</value>
        </property>
		<!--指定NameNode的元数据在JournalNode上的存放位置-->
	<property>
                <name>dfs.client.failover.proxy.provider.mycluster</name>
                <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
        </property>
		<!--指定 mycluster 出故障时,哪个实现类负责执行故障切换-->
        <property>
                <name>dfs.journalnode.edits.dir</name>
                <value>/home/hadoop/data/journaldata/jn</value>
        </property>
		<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
	<property>
                <name>dfs.ha.fencing.methods</name>
                <value>shell(/bin/true)</value>
        </property>
		<!-- 配置隔离机制,shell通过ssh连接active namenode节点,杀掉进程-->
        <property>
                <name>dfs.ha.fencing.ssh.private-key-files</name>
                <value>/home/hadoop/.ssh/id_rsa</value>
        </property>
		<!-- 为了实现SSH登录杀掉进程,还需要配置免密码登录的SSH密匙信息 -->
	<property>
                <name>dfs.ha.fencing.ssh.connect-timeout</name>
                <value>10000</value>
        </property>
        <property>
                <name>dfs.namenode.handler.count</name>
                <value>100</value>
        </property>
</configuration>

4.3修改slaves

hadoop01 hadoop02 hadoop03 

4.4修改hadoop-env.sh

#配置jdk路径 
export JAVA_HOME=/home/hadoop/app/jdk 
#配置hadoop安装目录 
export HADOOP_HOME=/home/hadoop/app/hadoop 

5.安装目录同步到其他节点

将hadoop安装目录从hadoop01节点整体同步到其他节点(比如hadoop02,hadoop03)

deploy.sh hadoop-2.6.0 /home/hadoop/app/ slave 

各个节点分别创建软连接

ln -s hadoop-2.6.0 hadoop 

6.创建规划的数据目录

通过以下远程脚本,分别在各个节点创建规划的数据目录。

runRemoteCmd.sh "mkdir -p /home/hadoop/data" all 

7.启动并测试hdfs

7.1首先需要启动规划节点的Zookeeper进程

runRemoteCmd.sh "/home/hadoop/app/zookeeper/bin/zkServer.sh start" all 

7.2然后再启动规划节点的journalnode进程

runRemoteCmd.sh "/home/hadoop/app/hadoop/sbin/hadoop-daemon.sh start journalnode" all 

7.3接着在nn1所在节点格式化namenode

bin/hdfs namenode -format 

7.4然后在nn1所在节点格式化zkfc

bin/hdfs zkfc -formatZK 

7.5 接着在nn1所在节点启动namenode

bin/hdfs namenode 

7.6与此同时,在nn2所在节点同步nn1所在节点namenode元数据信息

bin/hdfs namenode –bootstrapStandby 

nn2同步完nn1节点信息之后,在nn1所在节点按Ctrl+c 关闭nn1节点namenode进程。

7.7然后可以关闭相应节点的journalnode进程

runRemoteCmd.sh "/home/hadoop/app/hadoop/sbin/hadoop-daemon.sh stop journalnode" all 

7.8一键启动hdfs分布式集群

sbin/start-dfs.sh 

hdfs启动之后可以通过如下命令查看namenode节点状态:

bin/hdfs haadmin -getServiceState nn1 bin/hdfs haadmin -getServiceState nn2 

如果关闭hdfs集群,可以使用如下命令

sbin/stop-dfs.sh 

7.9 Web界面查看hdfs文件系统

http://hadoop01:50070 

或者

http://hadoop02:50070 

7.10测试运行hdfs

本地目录新建文件wd.txt

[hadoop@hadoop01 hadoop]$ vi wd.txt

hadoop spark

hadoop spark

hadoop spark

Hdfs文件系统中创建test目录

[hadoop@hadoop01 hadoop]$ bin/hdfs mkdir /test

[hadoop@hadoop01 hadoop]$ bin/hdfs dfs -ls /

将本地wd.txt文件上传至hdfs的/test目录下

bin/hdfs dfs -put wd.txt /test/

查看上传至hdfs的wd.txt文件

bin/hdfs dfs -ls /test

bin/hdfs dfs -cat /test/wd.txt

如果上述操作没有问题,hdfs已经搭建成功。

详尽的视频讲解,请查看该地址:https://edu.csdn.net/course/detail/9572

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

易水大数据

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值