欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

hadoop配置HA详细教程

发布时间:2023/12/20 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 hadoop配置HA详细教程 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

准备工作

1.修改Linux主机名
2.修改IP
3.修改主机名和IP的映射关系 /etc/hosts
4.关闭防火墙
5.ssh免登陆
6.安装JDK,配置环境变量等
7.注意集群时间要同步

集群部署节点角色的规划(3节点) ------------------ server01 namenode resourcemanager zkfc nodemanager datanode zookeeper journal node server02 namenode resourcemanager zkfc nodemanager datanode zookeeper journal node server03 datanode nodemanager zookeeper journal node ------------------

安装步骤:

1.安装配置zooekeeper集群

1.1解压

tar -zxvf zookeeper-3.4.5.tar.gz -C /home/hadoop/app/

1.2修改配置

cd /home/hadoop/app/zookeeper-3.4.5/conf/cp zoo_sample.cfg zoo.cfgvim zoo.cfg修改:dataDir=/home/hadoop/app/zookeeper-3.4.5/tmp在最后添加:server.1=hadoop05:2888:3888server.2=hadoop06:2888:3888server.3=hadoop07:2888:3888保存退出然后创建一个tmp文件夹mkdir /home/hadoop/app/zookeeper-3.4.5/tmpecho 1 > /home/hadoop/app/zookeeper-3.4.5/tmp/myid

1.3将配置好的zookeeper拷贝到其他节点(首先分别在hadoop06、hadoop07根目录下创建一个hadoop目录:mkdir /hadoop)

scp -r /home/hadoop/app/zookeeper-3.4.5/ hadoop06:/home/hadoop/app/scp -r /home/hadoop/app/zookeeper-3.4.5/ hadoop07:/home/hadoop/app/注意:修改hadoop06、hadoop07对应/hadoop/zookeeper-3.4.5/tmp/myid内容hadoop06:echo 2 > /home/hadoop/app/zookeeper-3.4.5/tmp/myidhadoop07:echo 3 > /home/hadoop/app/zookeeper-3.4.5/tmp/myid

2.安装配置hadoop集群

2.1解压

tar -zxvf hadoop-2.6.4.tar.gz -C /home/hadoop/app/

2.2配置HDFS(hadoop2.0所有的配置文件都在$HADOOP_HOME/etc/hadoop目录下)

#将hadoop添加到环境变量中vim /etc/profileexport JAVA_HOME=/usr/java/jdk1.7.0_55export HADOOP_HOME=/hadoop/hadoop-2.6.4export PATH=$PATH:$JAVA_HOME/cluster1n:$HADOOP_HOME/cluster1n#hadoop2.0的配置文件全部在$HADOOP_HOME/etc/hadoop下cd /home/hadoop/app/hadoop-2.6.4/etc/hadoop2.2.1修改hadoop-env.shexport JAVA_HOME=/export/servers/jdk1.8.0_65

2.2.2修改core-site.xml

<configuration> <!-- 集群名称在这里指定!该值来自于hdfs-site.xml中的配置 --> <property> <name>fs.defaultFS</name> <value>hdfs://cluster1</value> </property> <!-- 这里的路径默认是NameNode、DataNode、JournalNode等存放数据的公共目录 --> <property> <name>hadoop.tmp.dir</name> <value>/export/servers/hadoop-2.6.0-cdh5.14.0/HAhadoopDatas/tmp</value> </property><!-- ZooKeeper集群的地址和端口。注意,数量一定是奇数,且不少于三个节点--> <property> <name>ha.zookeeper.quorum</name> <value>node01:2181,node02:2181,node03:2181</value> </property> </configuration>

2.2.3修改hdfs-site.xml

<configuration> <!--指定hdfs的nameservice为cluster1,需要和core-site.xml中的保持一致 --> <property> <name>dfs.nameservices</name> <value>cluster1</value> </property> <!-- cluster1下面有两个NameNode,分别是nn1,nn2 --> <property> <name>dfs.ha.namenodes.cluster1</name> <value>nn1,nn2</value> </property> <!-- nn1的RPC通信地址 --> <property> <name>dfs.namenode.rpc-address.cluster1.nn1</name> <value>node01:8020</value> </property> <!-- nn1的http通信地址 --> <property> <name>dfs.namenode.http-address.cluster1.nn1</name> <value>node01:50070</value> </property> <!-- nn2的RPC通信地址 --> <property> <name>dfs.namenode.rpc-address.cluster1.nn2</name> <value>node02:8020</value> </property> <!-- nn2的http通信地址 --> <property> <name>dfs.namenode.http-address.cluster1.nn2</name> <value>node02:50070</value> </property> <!-- 指定NameNode的edits元数据在JournalNode上的存放位置 --> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://node01:8485;node02:8485;node03:8485/cluster1</value> </property> <!-- 指定JournalNode在本地磁盘存放数据的位置 --> <property> <name>dfs.journalnode.edits.dir</name> <value>/export/servers/hadoop-2.6.0-cdh5.14.0/journaldata</value> </property> <!-- 开启NameNode失败自动切换 --> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> <!-- 指定该集群出故障时,哪个实现类负责执行故障切换 --> <property> <name>dfs.client.failover.proxy.provider.cluster1</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行--> <property> <name>dfs.ha.fencing.methods</name> <value> sshfence </value> </property> <!-- 使用sshfence隔离机制时需要ssh免登陆 --> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/root/.ssh/id_rsa</value> </property> <!-- 配置sshfence隔离机制超时时间 --> <property> <name>dfs.ha.fencing.ssh.connect-timeout</name> <value>30000</value> </property> </configuration>

2.2.4修改mapred-site.xml

<configuration> <!-- 指定mr框架为yarn方式 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>

2.2.5修改yarn-site.xml

<configuration> <!-- 开启RM高可用 --> <property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> <!-- 指定RM的cluster id --> <property> <name>yarn.resourcemanager.cluster-id</name> <value>yrc</value> </property> <!-- 指定RM的名字 --> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property> <!-- 分别指定RM的地址 --> <property> <name>yarn.resourcemanager.hostname.rm1</name> <value>node01</value> </property> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>node02</value> </property> <!-- 指定zk集群地址 --> <property> <name>yarn.resourcemanager.zk-address</name> <value>node01:2181,node02:2181,node03:2181</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>

2.2.6修改slaves

node01 node02 node03

将软件拷贝到所有节点

scp -r hadoop-2.6.0-cdh5.14.0 node02:/$PWD scp -r hadoop-2.6.0-cdh5.14.0 node03:/$PWD

2.2.7配置免密码登陆

#首先要配置node01到node01、node02、node03 的免密码登陆 #在node01上生产一对钥匙 ssh-keygen #将公钥拷贝到其他节点,****包括自己**** ssh-coyp-id node01 ssh-coyp-id node02 ssh-coyp-id node03 #注意:两个namenode之间要配置ssh免密码登陆 ssh远程补刀时候需要 #在node02上生产一对钥匙 ssh-keygen #将公钥拷贝到node01 ssh-coyp-id node01

2.5启动zookeeper集群(分别在node01、node02、node03上启动zk)

bin/zkServer.sh start#查看状态:一个leader,两个followerbin/zkServer.sh status

2.6手动启动journalnode(分别在在node01、node02、node03上执行)

hadoop-daemon.sh start journalnode#运行jps命令检验,node01、node02、node03上多了JournalNode进程

2.7格式化namenode

#在node01上执行命令:hdfs namenode -format#格式化后会在根据core-site.xml中的hadoop.tmp.dir配置的目录下生成个hdfs初始化文件,把hadoop.tmp.dir配置的目录下所有文件拷贝到另一台namenode节点所在的机器scp -r tmp/ node02:/home/hadoop/app/hadoop-2.6.4/##也可以这样,建议hdfs namenode -bootstrapStandby

2.8格式化ZKFC(在active上执行即可)

hdfs zkfc -formatZK

2.9启动HDFS(在node01上执行)

start-dfs.sh

2.10启动YARN

start-yarn.sh还需要手动在standby上手动启动备份的 resourcemanageryarn-daemon.sh start resourcemanager

到此,hadoop-2.6.4配置完毕,可以统计浏览器访问:

http://node01:50070NameNode 'node01:8020' (active)http://node02:50070NameNode 'node02:8020' (standby)

验证HDFS HA

首先向hdfs上传一个文件hadoop fs -put /etc/profile /profilehadoop fs -ls /然后再kill掉active的NameNodekill -9 <pid of NN>通过浏览器访问:http://node02:50070NameNode 'node02:8020' (active)这个时候node02上的NameNode变成了active在执行命令:hadoop fs -ls /-rw-r--r-- 3 root supergroup 1926 2014-02-06 15:36 /profile刚才上传的文件依然存在!!!手动启动那个挂掉的NameNodehadoop-daemon.sh start namenode通过浏览器访问:http://node01:50070NameNode 'node01:8020' (standby)

验证YARN:

运行一下hadoop提供的demo中的WordCount程序:hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar wordcount /profile /out

OK,大功告成!!!

测试集群工作状态的一些指令 :

hdfs dfsadmin -report 查看hdfs的各节点状态信息 cluster1n/hdfs haadmin -getServiceState nn1 获取一个namenode节点的HA状态 scluster1n/hadoop-daemon.sh start namenode 单独启动一个namenode进程 ./hadoop-daemon.sh start zkfc 单独启动一个zkfc进程

总结

以上是生活随笔为你收集整理的hadoop配置HA详细教程的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。