yarn.resourcemanager.hostname 和yarn.resourcemanager.spark yarn clusterr-id的区别和联系

Trackbacks / Pings
To create code blocks or other preformatted text, indent by four spaces:
&&&&This will be displayed in a monospaced font. The first four
&&&&spaces will be stripped off, but all other whitespace
&&&&will be preserved.
&&&&Markdown is turned off in code blocks:
&&&& [This is not a link]()
To create not a block, but an inline code span, use backticks:
Here is some inline `code`. For more help see
- 127,185次 - 119,534次 - 78,109次 - 70,041次 - 62,373次 - 57,682次 - 57,548次 - 56,103次 - 52,482次 - 51,510次关于NameNode高可靠需要配置的文件有core-site.xml和hdfs-site.xml&
关于ResourceManager高可靠需要配置的文件有yarn-site.xml&
逻辑结构:&
NameNode-HA工作原理:&
在一个典型的HA集群中,最好有2台独立的机器的来配置NameNode角色,无论在任何时候,集群中只能有一个NameNode作为Active状态,而另一个是Standby状态,Active状态的NameNode负责集群中所有的客户端操作,这么设置的目的,其实HDFS底层的机制是有关系的,同一时刻一个文件,只允许一个写入方占用,如果出现多个,那么文件偏移量便会混乱,从而导致数据格式不可用,当然状态为Standby的NameNode这时候仅仅扮演一个Slave的角色,以便于在任何时候Active的NameNode挂掉时,能够第一时间,接替它的任务,成为主NameNode,达到一个热备份的效果,在HA架构里面SecondaryNameNode这个冷备角色已经不存在了,为了保持从NameNode时时的与主NameNode的元数据保持一致,他们之间交互通过一系列守护的轻量级进程JournalNode,当任何修改操作在主NameNode上执行时,它同时也会记录修改log到至少半数以上的JornalNode中,这时状态为Standby的NameNode监测到JournalNode里面的同步log发生变化了会读取JornalNode里面的修改log,然后同步到自己的的目录镜像树里面,当发生故障时,Active的NameNode挂掉后,Standby的NameNode会在它成为Active NameNode前,读取所有的JournalNode里面的修改日志,这样就能高可靠的保证与挂掉的NameNode的目录镜像树一致,然后无缝的接替它的职责,维护来自客户端请求,从而达到一个高可用的目的。&
为了达到快速容错的掌握全局的目的,Standby角色也会接受来自DataNode角色汇报的块信息,前面只是介绍了NameNode容错的工作原理,下面介绍下,当引入Zookeeper之后,为啥可以NameNode-HA可以达到无人值守,自动切换的容错。&
在主备切换上Zookeeper可以干的事:&
(1)失败探测&& 在每个NameNode启动时,会在Zookeeper上注册一个持久化的节点,当这个NameNode宕机时,它的会话就会终止,Zookeeper发现之后,就会通知备用的NameNode,Hi,老兄,你该上岗了。&
(2)选举机制, Zookeeper提供了一个简单的独占锁,获取Master的功能,如果那个NameNode发现自己得到这个锁,那就预示着,这个NameNode将被激活为Active状态&
当然,实际工作中Hadoop提供了ZKFailoverController角色,在每个NameNode的节点上,简称zkfc,它的主要职责如下:&
(1)健康监测,zkfc会周期性的向它监控的NameNode发送健康探测命令,从而来确定某个NameNode是否处于健康状态,如果机器宕机,心跳失败,那么zkfc就会标记它处于一个不健康的状态&
(2)会话管理, 如果NameNode是健康的,zkfc就会在zookeeper中保持一个打开的会话,如果NameNode同时还是Active状态的,那么zkfc还会在Zookeeper中占有一个类型为短暂类型的znode,当这个NameNode挂掉时,&
这个znode将会被删除,然后备用的NameNode,将会得到这把锁,升级为主NameNode,同时标记状态为Active,当宕机的NameNode,重新启动时,它会再次注册zookeper,发现已经有znode锁了,便会自动变为Standby状态,如此往复循环,保证高可靠,需要注意,目前仅仅支持最多配置2个NameNode。&
(3)master选举,如上所述,通过在zookeeper中维持一个短暂类型的znode,来实现抢占式的锁机制,从而判断那个NameNode为Active状态。&
core-site.xml里面&
&configuration&&&
&&property&&&
&&&&&&&&&name&fs.default.name&/name&&&
&&&&&&&&&value&hdfs://ns1&/value&&&
&&&&&/property&&&
&&&property&&&
&&&&&name&hadoop.tmp.dir&/name&&&
&&&&&value&/ROOT/server/data-hadoop/hadooptmp&/value&&&
&&&/property&&&
&&&property&&&
&&&&&&&&&&&&&&name&pression.codecs&/name&&&
&&&&&&&&&&&&&&value&org.apache.press.GzipCodec,org.apache.press.DefaultCodec,org.apache.press.BZip2Codec,org.apache.hadoop.io.co&&
mpress.SnappyCodec&/value&&&
&/property&&&
&property&&&
&&&name&fs.trash.interval&/name&&&
&&&value&0&/value&&&
&&&description&Number&of&minutes&between&trash&checkpoints.&&
&&If&zero,&the&trash&feature&is&disabled.&&
&&&/description&&&
&/property&&&
&!--&ha的zk的配置&--&&&
&property&&&
&&&&&&&&&name&ha.zookeeper.quorum&/name&&&
&&&&&&&&&value&h1:1,h3:2181&/value&&&
&&&&&/property&&&
&/configuration&&&
hdfs-site.xml里面&
&?xml&version=&1.0&&encoding=&UTF-8&?&&&
&?xml-stylesheet&type=&text/xsl&&href=&configuration.xsl&?&&&
&&Licensed&under&the&Apache&License,&Version&2.0&(the&&License&);&&
&&you&may&not&use&this&file&except&in&compliance&with&the&License.&&
&&You&may&obtain&a&copy&of&the&License&at&&
&&&&http://www.apache.org/licenses/LICENSE-2.0&&
&&Unless&required&by&applicable&law&or&agreed&to&in&writing,&software&&
&&distributed&under&the&License&is&distributed&on&an&&AS&IS&&BASIS,&&
&&WITHOUT&WARRANTIES&OR&CONDITIONS&OF&ANY&KIND,&either&express&or&implied.&&
&&See&the&License&for&the&specific&language&governing&permissions&and&&
&&limitations&under&the&License.&See&accompanying&LICENSE&file.&&
&!--&Put&site-specific&property&overrides&in&this&file.&--&&&
&configuration&&&
&property&&&&&&&
&&&&name&dfs.replication&/name&&&&&&&
&&&&value&1&/value&&&&&&&
&&/property&&&&&&&
&!--&集群数量小于3时,副本数大于1时,建议启用&--&&&
&&&!--&&&property&&&
&&&&name&dfs.client.block.write.replace-datanode-on-failure.enable&/name&&&
&&&&value&false&/value&&&
&&&&/property&&&
&&property&&&&&&&
&&&&name&dfs.namenode.name.dir&/name&&&&&&&
&&&&value&file:///ROOT/server/data-hadoop/nd&/value&&&&&&&
&&/property&&&&&&&
&&property&&&&&&&
&&&&name&dfs.datanode.data.dir&/name&&&&&&&
&&&&value&/ROOT/server/data-hadoop/dd&/value&&&&&&&
&&/property&&&&&&&
&property&&&&&&&
&&&name&dfs.permissions&/name&&&&&&&
&&&value&false&/value&&&&&&&
&/property&&&&&
&&&property&&&
&&&&&&&&&name&dfs.nameservices&/name&&&
&&&&&&&&&value&ns1&/value&&&
&&&&&/property&&&
&&&property&&&
&&&&&&&&&name&dfs.ha.namenodes.ns1&/name&&&
&&&&&&&&&value&h1,h2&/value&&&
&&&&&/property&&&
&&property&&&
&&&&&&&&&name&dfs.namenode.rpc-address.ns1.h1&/name&&&
&&&&&&&&&value&h1:9000&/value&&&
&&&&&/property&&&
&&property&&&
&&&&&&&&&name&dfs.namenode.http-address.ns1.h1&/name&&&
&&&&&&&&&value&h1:50070&/value&&&
&&&&&/property&&&
&&&&&property&&&
&&&&&&&&&name&dfs.namenode.rpc-address.ns1.h2&/name&&&
&&&&&&&&&value&h2:9000&/value&&&
&&&&&/property&&&&&&
&&property&&&
&&&&&&&&&name&dfs.namenode.http-address.ns1.h2&/name&&&
&&&&&&&&&value&h2:50070&/value&&&
&&&&&/property&&&
&&property&&&
&&&&&&&&&&&&&name&dfs.namenode.shared.edits.dir&/name&&&
&&&&&&&&&&&&&value&qjournal://h1:5;h3:8485/ns1&/value&&&
&&&&&/property&&&
&&&property&&&
&&&&&&&&&name&dfs.ha.automatic-failover.enabled.ns1&/name&&&
&&&&&&&&&value&true&/value&&&
&&&&&/property&&&
&property&&&
&&&&&&&&name&dfs.client.failover.proxy.provider.ns1&/name&&&
&&&&&&&&value&org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider&/value&&&
&&&&/property&&&
&property&&&
&&&&&&&&&name&dfs.journalnode.edits.dir&/name&&&
&&&&&&&&&value&/ROOT/server/data-hadoop/journaldata&/value&&&
&&&&&/property&&&
&property&&&
&&&&&&&&&name&dfs.ha.fencing.methods&/name&&&
&&&&&&&&&value&sshfence&/value&&&
&&&&&/property&&&
&property&&&
&&&&&&&&&name&dfs.ha.fencing.ssh.private-key-files&/name&&&
&&&&&&&&&value&/home/webmaster/.ssh/id_rsa&/value&&&
&&&&&/property&&&
&property&&&&&
&&&&&name&dfs.webhdfs.enabled&/name&&&&&
&&&&&value&true&/value&&&&&
&/property&&&&&
&property&&&&&
&&&&&&&&&name&dfs.blocksize&/name&&&&&
&&&&&&&&&value&&/value&&&&&
&/property&&&&&
&property&&&&&
&&&&&&&&&name&dfs.namenode.handler.count&/name&&&&&
&&&&&&&&&value&20&/value&&&&&
&/property&&&
&property&&&&&
&&&&&&&&&name&dfs.datanode.max.xcievers&/name&&&&&
&&&&&&&&&value&2048&/value&&&&&
&/property&&&
&/configuration&&&
yarn-site.xml里面:&
&?xml&version=&1.0&?&&&
&&Licensed&under&the&Apache&License,&Version&2.0&(the&&License&);&&
&&you&may&not&use&this&file&except&in&compliance&with&the&License.&&
&&You&may&obtain&a&copy&of&the&License&at&&
&&&&http://www.apache.org/licenses/LICENSE-2.0&&
&&Unless&required&by&applicable&law&or&agreed&to&in&writing,&software&&
&&distributed&under&the&License&is&distributed&on&an&&AS&IS&&BASIS,&&
&&WITHOUT&WARRANTIES&OR&CONDITIONS&OF&ANY&KIND,&either&express&or&implied.&&
&&See&the&License&for&the&specific&language&governing&permissions&and&&
&&limitations&under&the&License.&See&accompanying&LICENSE&file.&&
&configuration&&&
&&&&&&&&&!--启用RM高可用--&&&
&&&&property&&&
&&&&&&&&name&yarn.resourcemanager.ha.enabled&/name&&&
&&&&&&&&&value&true&/value&&&
&&&&/property&&&
&&&&&&&&!--RM集群标识符--&&&
&&&&property&&&
&&&&&&&&name&yarn.resourcemanager.cluster-id&/name&&&
&&&&&&&&&value&ns1&/value&&&
&&&&/property&&&
&&property&&&
&&&&&&&&&!--指定两台RM主机名标识符--&&&
&&&&&&&&name&yarn.resourcemanager.ha.rm-ids&/name&&&
&&&&&&&&&value&h1,h2&/value&&&
&&&&/property&&&
&&&&&&&&&!--RM故障自动切换--&&&
&&&&property&&&
&&&&&&&&&name&yarn.resourcemanager.ha.automatic-failover.recover.enabled&/name&&&
&&&&&&&&&value&true&/value&&&
&&&&/property&&&
&&&!--RM故障自动恢复--&&&
&&&&&&property&&&
&&&&&&&&name&yarn.resourcemanager.recovery.enabled&/name&&&&
&&&&&&&&&value&true&/value&&&&
&&&&/property&&&&
&&&&&&&&&!--RM主机1--&&&
&&&&property&&&
&&&&&&&&name&yarn.resourcemanager.hostname.h1&/name&&&
&&&&&&&&&value&h1&/value&&&
&&&&/property&&&
&&&&&&!--RM主机2--&&&
&&&&property&&&
&&&&&&&&name&yarn.resourcemanager.hostname.h2&/name&&&
&&&&&&&&&value&h2&/value&&&
&&&&/property&&&
&!--RM状态信息存储方式,一种基于内存(MemStore),另一种基于ZK(ZKStore)--&&&
&&&&&property&&&
&&&&&&&&name&yarn.resourcemanager.store.class&/name&&&
&&&&&&&&value&org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore&/value&&&
&&&&&/property&&&
&&&&&&&!--使用ZK集群保存状态信息--&&&
&&&&&property&&&
&&&&&&&&name&yarn.resourcemanager.zk-address&/name&&&
&&&&&&&&value&h1:1,h3:2181&/value&&&
&&&&&/property&&&
&&&&&&!--向RM调度资源地址--&&&
&&&&&property&&&
&&&&&&&&name&yarn.resourcemanager.scheduler.address.h1&/name&&&
&&&&&&&&&value&h1:8030&/value&&&
&&&&&/property&&&
&&property&&&
&&&&&&&&name&yarn.resourcemanager.scheduler.address.h2&/name&&&
&&&&&&&&value&h2:8030&/value&&&
&&&&&/property&&&
&&&&&&&!--NodeManager通过该地址交换信息--&&&
&&&&&property&&&
&&&&&&&&&name&yarn.resourcemanager.resource-tracker.address.h1&/name&&&
&&&&&&&&value&h1:8031&/value&&&
&&&&&/property&&&
&&&&&property&&&
&&&&&&&&name&yarn.resourcemanager.resource-tracker.address.h2&/name&&&
&&&&&&&&value&h2:8031&/value&&&
&&&&&/property&&&
&&&&&&&!--客户端通过该地址向RM提交对应用程序操作--&&&
&&&&&property&&&
&&&&&&&&name&yarn.resourcemanager.address.h1&/name&&&
&&&&&&&&value&h1:8032&/value&&&
&&&&&/property&&&
&&&&&property&&&
&&&&&&&&name&yarn.resourcemanager.address.h2&/name&&&
&&&&&&&&value&h2:8032&/value&&&
&&&&/property&&&&&&&
&&&&&&&&&!--管理员通过该地址向RM发送管理命令--&&&
&&&&&property&&&
&&&&&&&&name&yarn.resourcemanager.admin.address.h1&/name&&&
&&&&&&&&value&h1:8033&/value&&&
&&&&&/property&&&
&&&&&property&&&
&&&&&&&&name&yarn.resourcemanager.admin.address.h2&/name&&&
&&&&&&&&&value&h2:8033&/value&&&
&&&&&/property&&&
&&&&&&!--RM&HTTP访问地址,查看集群信息--&&&
&&&&&property&&&
&&&&&&&&name&yarn.resourcemanager.webapp.address.h1&/name&&&
&&&&&&&&value&h1:8088&/value&&&
&&&&&/property&&&
&&&&&property&&&
&&&&&&&&name&yarn.resourcemanager.webapp.address.h2&/name&&&
&&&&&&&&value&h2:8088&/value&&&
&&&&&/property&&&
&&&property&&&&&
&&&&&name&yarn.resourcemanager.scheduler.class&/name&&&&&
&&&&&value&org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler&/value&&&&&
&&&/property&&&&
&&&property&&&&&
&&&&&name&yarn.nodemanager.aux-services&/name&&&&&
&&&&&value&mapreduce_shuffle&/value&&&&&
&&&/property&&&&&
&&&property&&&&&
&&&&&name&yarn.nodemanager.aux-services.mapreduce.shuffle.class&/name&&&&&
&&&&&value&org.apache.hadoop.mapred.ShuffleHandler&/value&&&&&
&&&/property&&&&&
&&&property&&&&&&&
&&&&&description&Classpath&for&typical&applications.&/description&&&&&&&
&&&&&name&yarn.application.classpath&/name&&&&&&&
&&&&&value&$HADOOP_CONF_DIR&&&&
&&&&,$HADOOP_COMMON_HOME/share/hadoop/common/*&&&&
&&&&,$HADOOP_COMMON_HOME/share/hadoop/common/lib/*&&&&
&&&&,$HADOOP_HDFS_HOME/share/hadoop/hdfs/*&&&&
&&&&,$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*&&&&
&&&&,$YARN_HOME/share/hadoop/yarn/*&/value&&&&&&&
&&&/property&&&&&&
&!--&Configurations&for&NodeManager&--&&&&&
&&&property&&&&&
&&&&&name&yarn.nodemanager.resource.memory-mb&/name&&&&&
&&&&&value&5632&/value&&&&&
&&&/property&&&&&
&&property&&&
&&&&&name&yarn.scheduler.minimum-allocation-mb&/name&&&
&&&&&value&1408&/value&&&
&&&/property&&&
&&property&&&
&&&&&name&yarn.scheduler.maximum-allocation-mb&/name&&&
&&&&&value&5632&/value&&&
&&&/property&&&
&/configuration&&&
mapred-site.xml里面内容&
&?xml&version=&1.0&?&&&
&?xml-stylesheet&type=&text/xsl&&href=&configuration.xsl&?&&&
&&Licensed&under&the&Apache&License,&Version&2.0&(the&&License&);&&
&&you&may&not&use&this&file&except&in&compliance&with&the&License.&&
&&You&may&obtain&a&copy&of&the&License&at&&
&&&&http://www.apache.org/licenses/LICENSE-2.0&&
&&Unless&required&by&applicable&law&or&agreed&to&in&writing,&software&&
&&distributed&under&the&License&is&distributed&on&an&&AS&IS&&BASIS,&&
&&WITHOUT&WARRANTIES&OR&CONDITIONS&OF&ANY&KIND,&either&express&or&implied.&&
&&See&the&License&for&the&specific&language&governing&permissions&and&&
&&limitations&under&the&License.&See&accompanying&LICENSE&file.&&
&!--&Put&site-specific&property&overrides&in&this&file.&--&&&
&configuration&&&
&property&&&&&
&&&&&name&mapreduce.framework.name&/name&&&&&
&&&&&value&yarn&/value&&&&&
&/property&&&&&
&property&&&&&
&&&&&name&mapreduce.jobtracker.address&/name&&&&&
&&&&&value&h1:8021&/value&&&&&
&/property&&&&&
&property&&&&&
&&&&&name&mapreduce.jobhistory.address&/name&&&&&
&&&&&value&h1:10020&/value&&&&&
&/property&&&&&
&property&&&&&
&&&&&name&mapreduce.jobhistory.webapp.address&/name&&&&&
&&&&&value&h1:19888&/value&&&&&
&/property&&&&&
&property&&&&&
&&&&&name&mapred.max.maps.per.node&/name&&&&&
&&&&&value&2&/value&&&&&
&/property&&&&&
&property&&&&&
&&&&&name&mapred.max.reduces.per.node&/name&&&&&
&&&&&value&1&/value&&&&&
&/property&&&&&
&property&&&&&
&&&&&name&mapreduce.map.memory.mb&/name&&&&&
&&&&&value&1408&/value&&&&&
&/property&&&&&
&property&&&&&
&&&&&name&mapreduce.map.java.opts&/name&&&&&
&&&&&value&-Xmx1126M&/value&&&&&
&/property&&&&&
&property&&&&&
&&&&&name&mapreduce.reduce.memory.mb&/name&&&&&
&&&&&value&2816&/value&&&&&
&/property&&&&&
&property&&&&&
&&&&&name&mapreduce.reduce.java.opts&/name&&&&&
&&&&&value&-Xmx2252M&/value&&&&&
&/property&&&&&
&property&&&&&
&&&&&name&mapreduce.task.io.sort.mb&/name&&&&&
&&&&&value&512&/value&&&&&
&/property&&&&&
&property&&&&&
&&&&&name&mapreduce.task.io.sort.factor&/name&&&&&
&&&&&value&100&/value&&&&&
&/property&&&&&
&/configuration&&&
启动方式:假设你是新的集群,如果不是,请参考文末的官网url链接&
1,先在集群中启动N/2+1个JornalNode进程,写ssh脚本执行命令:hadoop-daemon.sh start journalnode&
2 ,然后在第一台NameNode上应执行hdfs namenode -format格式化集群&
3,然后在第二台NameNode上执行hdfs namenode -bootstrapStandby同步第一台NameNode元数据&
4,在第一台NameNode上执行命令hdfs zkfc -formatZK格式化zookeeper&
5,第一台NameNode上启动zkfc执行命令:hadoop-daemon.sh start zkfc&
6,在第二台NameNode上启动zkfc执行命令:hadoop-daemon.sh start zkfc&
7,执行start-dfs.sh启动所有的NameNode,DataNode,JournalNode(注意如果已经启动就会跳过)&
8,执分别访问两台机器的50070端口,查看NameNode状态,其中一个为Active,一个为Standby即为正常&
9,测试容错,找到状态为Active的NameNode的pid进程,并kill掉,查看standby是否会自动晋级为active,如果&
一切安装完毕,则会自动切换,如果没切换,注意查看zkfc和namenode的log&
感谢并参考的文章:&
http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html&
http://lizhenliang./1354&21:06 提问
yarn无法进入管理界面??
配置hadoop伪分布式环境的时候,yarn正常启动了,却无法进入管理界面
[root@Hanfeng-linux6 sbin]# start-yarn.sh
starting yarn daemons
resourcemanager running as process 4052. Stop it first.
root@localhost's password:
localhost: nodemanager running as process 4348. Stop it first.
按赞数排序
hadoop2.0已经发布了稳定版本了,增加了很多特性,比如HDFS HA、YARN等。最新的hadoop-2.4.1又增加了YARN HA
注意:apache提供的hadoop-2.4.1的安装包是在32位操作系统编译的,因为hadoop依赖一些C++的本地库,
建议第一次安装用32位的系统
1.修改Linux主机名
3.修改主机名和IP的映射关系
######注意######如果你们公司是租用的服务器或是使用的云主机(如华为用主机、阿里云主机等)
/etc/hosts里面要配置的是内网IP地址和主机名的映射关系
4.关闭防火墙
5.ssh免登陆
6.安装JDK,配置环境变量等
集群规划:
安装的软件
运行的进程
192.168.1.201
jdk、hadoop
NameNode、DFSZKFailoverController(zkfc)
192.168.1.202
jdk、hadoop
NameNode、DFSZKFailoverController(zkfc)
192.168.1.203
jdk、hadoop
ResourceManager
192.168.1.204
jdk、hadoop
ResourceManager
192.168.1.205
jdk、hadoop、zookeeper
DataNode、NodeManager、JournalNode、QuorumPeerMain
192.168.1.206
jdk、hadoop、zookeeper
DataNode、NodeManager、JournalNode、QuorumPeerMain
192.168.1.207
jdk、hadoop、zookeeper
DataNode、NodeManager、JournalNode、QuorumPeerMain
1.在hadoop2.0中通常由两个NameNode组成,一个处于active状态,另一个处于standby状态。Active NameNode对外提供服务,而Standby NameNode则不对外提供服务,仅同步active namenode的状态,以便能够在它失败时快速进行切换。
hadoop2.0官方提供了两种HDFS HA的解决方案,一种是NFS,另一种是QJM。这里我们使用简单的QJM。在该方案中,主备NameNode之间通过一组JournalNode同步元数据信息,一条数据只要成功写入多数JournalNode即认为写入成功。通常配置奇数个JournalNode
这里还配置了一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当Active NameNode挂掉了,会自动切换Standby NameNode为standby状态
2.hadoop-2.2.0中依然存在一个问题,就是ResourceManager只有一个,存在单点故障,hadoop-2.4.1解决了这个问题,有两个ResourceManager,一个是Active,一个是Standby,状态由zookeeper进行协调
安装步骤:
1.安装配置zooekeeper集群(在itcast05上)
tar -zxvf zookeeper-3.4.5.tar.gz -C /itcast/
1.2修改配置
cd /itcast/zookeeper-3.4.5/conf/
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
修改:dataDir=/itcast/zookeeper-3.4.5/tmp
在最后添加:
server.1=itcast05:
server.2=itcast06:
server.3=itcast07:
然后创建一个tmp文件夹
mkdir /itcast/zookeeper-3.4.5/tmp
再创建一个空文件
touch /itcast/zookeeper-3.4.5/tmp/myid
最后向该文件写入ID
echo 1 & /itcast/zookeeper-3.4.5/tmp/myid
1.3将配置好的zookeeper拷贝到其他节点(首先分别在itcast06、itcast07根目录下创建一个itcast目录:mkdir /itcast)
scp -r /itcast/zookeeper-3.4.5/ itcast06:/itcast/
scp -r /itcast/zookeeper-3.4.5/ itcast07:/itcast/
注意:修改itcast06、itcast07对应/itcast/zookeeper-3.4.5/tmp/myid内容
itcast06:
echo 2 & /itcast/zookeeper-3.4.5/tmp/myid
itcast07:
echo 3 & /itcast/zookeeper-3.4.5/tmp/myid
2.安装配置hadoop集群(在itcast01上操作)
tar -zxvf hadoop-2.4.1.tar.gz -C /itcast/
2.2配置HDFS(hadoop2.0所有的配置文件都在$HADOOP_HOME/etc/hadoop目录下)
#将hadoop添加到环境变量中
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_55
export HADOOP_HOME=/itcast/hadoop-2.4.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
#hadoop2.0的配置文件全部在$HADOOP_HOME/etc/hadoop下
cd /itcast/hadoop-2.4.1/etc/hadoop
2.2.1修改hadoo-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_55
2.2.2修改core-site.xml
&configuration&
&!-- 指定hdfs的nameservice为ns1 --&
&property&
&name&fs.defaultFS&/name&
&value&hdfs://ns1&/value&
&/property&
&!-- 指定hadoop临时目录 --&
&property&
&name&hadoop.tmp.dir&/name&
&value&/itcast/hadoop-2.4.1/tmp&/value&
&/property&
&!-- 指定zookeeper地址 --&
&property&
&name&ha.zookeeper.quorum&/name&
&value&itcast05:2181,itcast06:2181,itcast07:2181&/value&
&/property&
&/configuration&
2.2.3修改hdfs-site.xml
&configuration&
&!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 --&
&property&
&name&dfs.nameservices&/name&
&value&ns1&/value&
&/property&
&!-- ns1下面有两个NameNode,分别是nn1,nn2 --&
&property&
&name&dfs.ha.namenodes.ns1&/name&
&value&nn1,nn2&/value&
&/property&
&!-- nn1的RPC通信地址 --&
&property&
&name&dfs.namenode.rpc-address.ns1.nn1&/name&
&value&itcast01:9000&/value&
&/property&
&!-- nn1的http通信地址 --&
&property&
&name&dfs.namenode.http-address.ns1.nn1&/name&
&value&itcast01:50070&/value&
&/property&
&!-- nn2的RPC通信地址 --&
&property&
&name&dfs.namenode.rpc-address.ns1.nn2&/name&
&value&itcast02:9000&/value&
&/property&
&!-- nn2的http通信地址 --&
&property&
&name&dfs.namenode.http-address.ns1.nn2&/name&
&value&itcast02:50070&/value&
&/property&
&!-- 指定NameNode的元数据在JournalNode上的存放位置 --&
&property&
&name&dfs.namenode.shared.edits.dir&/name&
&value&qjournal://itcast05:8485;itcast06:8485;itcast07:8485/ns1&/value&
&/property&
&!-- 指定JournalNode在本地磁盘存放数据的位置 --&
&property&
&name&dfs.journalnode.edits.dir&/name&
&value&/itcast/hadoop-2.4.1/journal&/value&
&/property&
&!-- 开启NameNode失败自动切换 --&
&property&
&name&dfs.ha.automatic-failover.enabled&/name&
&value&true&/value&
&/property&
&!-- 配置失败自动切换实现方式 --&
&property&
&name&dfs.client.failover.proxy.provider.ns1&/name&
&value&org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider&/value&
&/property&
&!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行--&
&property&
&name&dfs.ha.fencing.methods&/name&
shell(/bin/true)
&/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&itcast03&/value&
&/property&
&property&
&name&yarn.resourcemanager.hostname.rm2&/name&
&value&itcast04&/value&
&/property&
&!-- 指定zk集群地址 --&
&property&
&name&yarn.resourcemanager.zk-address&/name&
&value&itcast05:2181,itcast06:2181,itcast07:2181&/value&
&/property&
&property&
&name&yarn.nodemanager.aux-services&/name&
&value&mapreduce_shuffle&/value&
&/property&
&/configuration&
2.2.6修改slaves(slaves是指定子节点的位置,因为要在itcast01上启动HDFS、在itcast03启动yarn,所以itcast01上的slaves文件指定的是datanode的位置,itcast03上的slaves文件指定的是nodemanager的位置)
2.2.7配置免密码登陆
#首先要配置itcast01到itcast02、itcast03、itcast04、itcast05、itcast06、itcast07的免密码登陆
#在itcast01上生产一对钥匙
ssh-keygen -t rsa
#将公钥拷贝到其他节点,包括自己
ssh-coyp-id itcast01
ssh-coyp-id itcast02
ssh-coyp-id itcast03
ssh-coyp-id itcast04
ssh-coyp-id itcast05
ssh-coyp-id itcast06
ssh-coyp-id itcast07
#配置itcast03到itcast04、itcast05、itcast06、itcast07的免密码登陆
#在itcast03上生产一对钥匙
ssh-keygen -t rsa
#将公钥拷贝到其他节点
ssh-coyp-id itcast04
ssh-coyp-id itcast05
ssh-coyp-id itcast06
ssh-coyp-id itcast07
#注意:两个namenode之间要配置ssh免密码登陆,别忘了配置itcast02到itcast01的免登陆
在itcast02上生产一对钥匙
ssh-keygen -t rsa
ssh-coyp-id -i itcast01
2.4将配置好的hadoop拷贝到其他节点
scp -r /itcast/ itcast02:/
scp -r /itcast/ itcast03:/
scp -r /itcast/hadoop-2.4.1/ root@itcast04:/itcast/
scp -r /itcast/hadoop-2.4.1/ root@itcast05:/itcast/
scp -r /itcast/hadoop-2.4.1/ root@itcast06:/itcast/
scp -r /itcast/hadoop-2.4.1/ root@itcast07:/itcast/
###注意:严格按照下面的步骤
2.5启动zookeeper集群(分别在itcast05、itcast06、tcast07上启动zk)
cd /itcast/zookeeper-3.4.5/bin/
./zkServer.sh start
#查看状态:一个leader,两个follower
./zkServer.sh status
2.6启动journalnode(分别在在itcast05、itcast06、tcast07上执行)
cd /itcast/hadoop-2.4.1
sbin/hadoop-daemon.sh start journalnode
#运行jps命令检验,itcast05、itcast06、itcast07上多了JournalNode进程
2.7格式化HDFS
#在itcast01上执行命令:
hdfs namenode -format
#格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,这里我配置的是/itcast/hadoop-2.4.1/tmp,然后将/itcast/hadoop-2.4.1/tmp拷贝到itcast02的/itcast/hadoop-2.4.1/下。
scp -r tmp/ itcast02:/itcast/hadoop-2.4.1/
2.8格式化ZK(在itcast01上执行即可)
hdfs zkfc -formatZK
2.9启动HDFS(在itcast01上执行)
sbin/start-dfs.sh
2.10启动YARN(#####注意#####:是在itcast03上执行start-yarn.sh,把namenode和resourcemanager分开是因为性能问题,因为他们都要占用大量资源,所以把他们分开了,他们分开了就要分别在不同的机器上启动)
sbin/start-yarn.sh
到此,hadoop-2.4.1配置完毕,可以统计浏览器访问:
http://192.168.1.201:50070
NameNode 'itcast01:9000' (active)
http://192.168.1.202:50070
NameNode 'itcast02:9000' (standby)
验证HDFS HA
首先向hdfs上传一个文件
hadoop fs -put /etc/profile /profile
hadoop fs -ls /
然后再kill掉active的NameNode
kill -9 &pid of NN&
通过浏览器访问:http://192.168.1.202:50070
NameNode 'itcast02:9000' (active)
这个时候itcast02上的NameNode变成了active
在执行命令:
hadoop fs -ls /
-rw-r--r--
3 root supergroup
-06 15:36 /profile
刚才上传的文件依然存在!!!
手动启动那个挂掉的NameNode
sbin/hadoop-daemon.sh start namenode
通过浏览器访问:http://192.168.1.201:50070
NameNode 'itcast01:9000' (standby)
验证YARN:
运行一下hadoop提供的demo中的WordCount程序:
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar wordcount /profile /out
OK,大功告成!!!
其他相似问题

我要回帖

更多关于 yarn nodemanager 的文章

 

随机推荐