Hadoop集群的配置(二)

转自:http://www.cnblogs.com/baiboy/p/4640640.html

摘要: hadoop集群配置系列文档,是笔者在实验室真机环境实验后整理而得。以便随后工作所需,做以知识整理,另则与博客园朋友分享实验成果,因为笔者在学习初期,也遇到不少问题。但是网上一些文档大多互相抄袭,里面错误百出。笔者结合自学书籍视频等资料,完成这一套配置资料。实验结果和过程经过反复测试无误后方整理出来的。配置过程中,初学者若有实验环境,可以在真机环境下完成,若无条件,可补习下虚拟机与Linux操作系统的基础知识,以及里面对linux常规命令使用,建议读者边配置学学习。(本文原创/整理,转载请标注原文出处: Hadoop集群的配置(二) )

白宁超

2015年7月12日10:40:04

相关文章

  1. 【Oracle RAC集群搭建1】 集群概念介绍
  2. 【Oracle RAC集群搭建2】 ORACLE集群概念和原理
  3. 【Oracle RAC集群搭建3】 RAC 工作原理和相关组件
  4. 【Oracle RAC集群搭建4】 缓存融合技术
  5. 【Oracle RAC集群搭建5】 RAC 特殊问题和实战经验
  6. 【Oracle RAC集群搭建6】 ORACLE 11 G版本2 RAC在LINUX上使用NFS安装前准备
  7. 【Oracle RAC集群搭建7】 ORACLE ENTERPRISE LINUX 5.7下DATABASE 11G RAC集群安装
  8. 【Oracle RAC集群搭建8】 ORACLE ENTERPRISE LINUX 5.7下DATABASE 11G RAC数据库安装
  9. 【Oracle RAC集群搭建9】 ORACLE ENTERPRISE LINUX 5.7下DATABASE 11G RAC基本测试与使用
  10. 【MySql集群搭建】   真机环境下MySQL-Cluster搭建文档

  11. 【Hadoop集群搭建1】Hadoop集群的配置

  12. 【Hadoop集群搭建2】Hadoop集群的配置 

2.8 节点之间的免密码通信

1.什么是SSH

SSH是Secure Shell的缩写,由IETF的网络工作小组(Network Working Group)所制定;SSH为建立在应用层和传输层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。

从客户端来看,SSH提供两种级别的安全验证。

第一种级别  基于口令的安全验证

只要知道自己的帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。

第二种级别  基于密匙的安全验证

需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。

用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。

第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能需要10秒。

2.虚拟机拷贝节点

关闭当前CentOS,然后右击CentOS,选择“管理”-->“克隆”。

                      

 

分别完成CentOS1、CentOS2、CentOS3的克隆工作,然后分别启动,重复2.2修改网络,用pietty登录,重复2.5的操作步骤更改相应主机名。

思考:node节点上的hosts和其他节点上的hosts一样吗?其中hosts文件还不算大,手工改也不会耗费太多时间,如果搭建的是几百个节点的集群呢?

我们可以登录node节点,把node节点上的hosts远程拷贝到其他节点。

使用scp命令: scp  fromAdd   toAdd  如图

 

注意其中出现了和我们第一次连接出现的提示,The authenticity of host 'node1 (192.168.10.101)' can't be established.我们确认连接方安全输入“yes”回车,输入node1密码连接成功,打开known_hosts我们可以看到生成的密钥:

 

以后再与node1不会再出现提示,因为在known_hosts已经加入了node1。但仍然需要输入密码,下面我们解决免密码登录的问题,读者先完成其他节点的hosts拷贝。

3.SSH免密码登录

在各节点上生成各自SSH秘钥对(命令中的rsa可以改成dsa,安全性更高),以node1为例。

 

 

在本机上生成authorized_keys,并验证能否对本机进行SSH无密码登陆。

 

       

所有节点都生成自己的authorized_keys之后,通过ssh-copy-id命令拷贝各自的公钥到node2节点(可以随机指定某个存在的节点),下面以node1节点为例,node1节点的公钥复制到node2节点中并加入到授权的key中,并验证是否配置成功。

 

 

以下是node2节点完成公钥复制后的文件。

 

由此可见所有节点都已经加入了[微软用户1] ,只要通过远程拷贝那么节点之间就可以实现免密码登录了。

只要在node2节点上执行:

scp /root/.ssh/authorized_keys node:/root/.ssh/;scp /root/.ssh/authorized_keys node1:/root/.ssh/;scp /root/.ssh/authorized_keys node3:/root/.ssh/

 

 

这样,就可以测试节点之间的登录了。

2.9 Hadoop启动和测试

1.格式化文件系统

在node节点上首先格式化namenode,执行命令hdfs  namenode  -format

在出现提示信息的最后第二行出现“Exiting with status 0”表示格式化成功,在UNIX中0表示成功,1表示失败,因此读者如果返回“Exiting with status 1”应该好好分析下前面的错误提示信息,一般来说是因为前面配置文件和hosts文件问题,修改后一定要同步到其他节点上,保持相同环境。

 

注意:有些读者以前用hadoop1.2或者更靠前的版本,会习惯用hadoop namenode -format格式化,这个时候会弹出一条WARNING信息,警告脚本已过时,但不会影响结果,因为Hadoop2.2版本对之前的Hadoop命令几乎都兼容。

注意:格式化前可以先自定义集群名字,如果未定义,系统将自动生成[微软用户2] 。

hadoop namenode -format -clusterid clustername

 2.启动HDFS

使用start-dfs.sh开启hadoop dfs服务。

 

通过上面可以看到,我们启动了HDFS,node节点作为namenode,node1、node2、node3作为datanode,而node1也作为secondnamenode。

可以通过jps命令验证。Jps也是Windows上面的命令,表示开启的Java进程。当出现如下结果,表示验证成功。

       

                

同样,也可以通过网络验证HDFSs情况,在Lunix环境下,在Web浏览器中输入:http://node:50070,当然也可以在Windows环境中通过该URL访问,只需修改如下文件:

C:\Windows\System32\drivers\etc\hosts  添加192.168.10.100 node即可。

 

3.启动YARN集群

在主节点node[微软用户4] 上,执行命令:start-yarn.sh

 

通过输出可以看到namenode已经作为了resourcemanager,而其他三个节点分别作为nodemanager。通过命令tail -f  /home/hadoop/hadoop2.2/logs/yarn-root-resourcemanager-node.out

可以查看启动日志。

或者查看启动对应进程情况: jps

 

其他节点可以通过类似命令验证,当然最方便的是输入地址:http://node:8088/。

 

NodeManager运行在从节点上,可以通过Web控制台查看对应节点的资源状态,如节点s1:http://node1:8042/

 

 

4.管理JobHistory Server

启动可以[微软用户5] JobHistory Server,能够通过Web控制台查看集群计算的任务的信息,执行如下命令:       mr-jobhistory-daemon.sh start historyserver


通过访问http://       node:19888/查看任务执行历史信息。


终止JobHistory Server,执行如下命令:mr-jobhistory-daemon.sh stop historyserver

5.集群验证

可以使用Hadoop自带的WordCount例子进行验证。先在HDFS创建几个数据目录:

hadoop fs -mkdir -p /data/wordcount

 

hadoop fs -mkdir -p /output/

目录/data/wordcount用来存放Hadoop自带的WordCount例子的数据文件,运行这个MapReduce任务的结果输出到/output/wordcount目录中。

将本地文件上传到HDFS中:

hadoop fs -put /home/hadoop/hadoop2.2/etc/hadoop/*.xml /data/wordcount/

可以查看上传后的文件情况,执行如下命令:

hadoop fs -ls /data/wordcount

可以看到上传到HDFS中的文件。

下面,运行WordCount例子,执行如下命令:

hadoop  jar  /home/hadoop/hadoop2.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount  /data/wordcount  /output/wordcount

通过http://node:8088/可以看到节点的运行情况。

 

运行结束后可以通过如下命令查看结果:

hadoop fs -cat /output/wordcount/part-r-00000 | head

以后我们掌握了相关api后可以自己编写切词统计程序。

6.需要了解的默认配置

在Hadoop 2.2.0中,YARN框架有很多默认的参数值,如果是在机器资源比较不足的情况下,需要修改这些默认值,来满足一些任务需要。

NodeManager和ResourceManager都是在yarn-site.xml文件中配置的,而运行MapReduce任务时,是在mapred-site.xml中进行配置的。

下面看一下相关的参数及其默认值情况:

3.动态管理节点(了解)


3.1动态增加和删除datanode

总的来说,正确的做法是优先通过配置文件,再在具体机器上进行相应进程的启动/停止操作。

1. 配置文件

  • 在namenode下修改配置文件
  • 在hadoop 0.x中上述配置存放在文件conf/hadoop-site.xml中;
  • 在hadoop 2.x中变化很大,文件为conf/hdfs-site.xml中,参数名为:dfs.namenode.hosts和fs.namenode.hosts.exclude。

参数作用:

dfs.hosts:[微软用户6] 

 

Names   a file that contains a list of hosts that are permitted to connect to the   namenode. The full pathname of the file must be specified. If the value is   empty, all hosts are permitted.

dfs.hosts.exclude:

 

Names a file that contains a list of hosts that are not permitted to connect to the namenode. The full pathname of the file must be specified. If the value is empty, no hosts are excluded

 

用法说明:

修改hdfs-site.xml,添加:

 

  • 如果不需要允许列表,就不要创建对应项了。然后创建value所指定的文件,一行写一个主机名。
  • 在新slave上进行相关配置。
  • 在master上的slave列表加入该slave(非必须,方便以后重启cluster用)
  • (若有)在datanode-allow.list中加入该slave
  • 在slave上启动datanode进程:
  • 运行:hadoop-daemon.sh start datanode  

2. 添加

3. 删除

极端不建议直接在slave上通过:hadoop-daemon.sh stop datanode 命令关掉datanode,这会导致HDFS中出现missing block,具体步骤如下:

  • 在master上修改datanode-deny.list,添加相应机器
  • 在master上刷新节点配置情况:hadoop dfsadmin -refreshNodes  

此时在Web UI上就可以看到该节点变为Decommissioning状态,过一会就变为Dead了。也可以通过:hadoop dfsadmin -report命令查看。  namenode.stale.datanode.interval

  • 在slave上关闭datanode进程(非必须):  

运行: hadoop-daemon.sh stop datanode 

4. 重新加入各个删除的节点

  • 在master的datanode-deny.list删除相应机器
  • 在master上刷新节点配置情况:hadoop dfsadmin -refreshNodes 
  • 在slave上重启datanode进程:hadoop-daemon.sh start datanode 

注意:如果之前没有关闭该slave上的datanode进程,需要先关闭再重新启动。

3.2. 动态修改TaskTracker

1. 配置文件

对于hadoop 2.x下[微软用户7] 在namenode下修改配置文件conf/mapred-site.xml。关键参数mapred.hosts和mapred.hosts.exclude。

参数作用:和datanode的对应项一样。

 

 

 

修改mapred-site.xml,添加参数:

 

然后创建value所指定的文件。一行写一个主机名。

2. 添加

  • 在新slave上进行相关配置。
  • 在master上的slave列表加入该slave(非必须,方便以后重启cluster用)
  • 若有)[微软用户8] 在tasktracker-allow.list中加入该slave
  • 在slave上启动tasktracker进程:
  • 运行:hadoop-daemon.sh start tasktracker  

注意:可以用jps命令查看机器上的java进程的pid和进程名。

3. 删除

不建议直接在slave上通过:hadoop-daemon.sh stop tasktracker命令关掉tasktracker,这会导致namenode认为这些机器暂时失联,在一个超时时间内(默认10min+30s)依然假设它们是正常的还会将任务发送给它们。

  • 在master上修改tasktracker-deny.list,添加相应机器
  • 在master上刷新节点配置情况:hadoop mradmin -refreshNodes  

此时在Web UI上立即就可以看到Nodes的数量减少了,而Exclude Nodes的数量增加了。可以点进去具体查看。

  • 在slave上关闭tasktracker进程(非必须):运行:hadoop-daemon.sh stop tasktracker  

4. 重新加入各个删除的节点

  • 在master的tasktracker-deny.list删除相应机器
  • 在master上刷新节点配置情况:hadoop mradmin -refreshNodes  
  • 在slave上重启tasktracker进程:hadoop-daemon.sh start tasktracker  

注意:如果之前没有关闭该slave上的tasktracker进程,需要先关闭再重新启动。

 


hadoop配置完

转载于:https://www.cnblogs.com/Jace06/articles/6842838.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/370738.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

允许使用抽象类类型 isearchboxinfo 的对象_Java学习5-设计模式+抽象类/方法

1.设计模式设计模式:一套被反复使用、多数人知晓的,经过分类编目的、代码设计经验的总结,是软件开发人员在软件开发过程中面临的一般问题的解决方案。项目中合理的运用设计模式可以完美的解决很多问题; 每种模式在现实中都有相应的…

计算机病毒是以独立的文件形式存在的对吗,计算机病毒以什么形式存在?

自从2113世纪出现第一种病毒以来,对于世界上共有5261种病毒的疾病数量有不同的看法. 无论有1,653种,病毒的数量仍在增加. 根据国外统计,计算机病毒以每周10种的速度增长. 根据我国部的统计,中国计算机病毒以每月4种的速度增长. 有…

签署Java代码

在上一篇文章中,我们讨论了如何保护移动代码 。 提到的措施之一是签名代码。 这篇文章探讨了Java程序如何工作。 数字签名 数字签名的基础是密码学 ,特别是公钥密码学 。 我们使用一组加密密钥:私有密钥和公共密钥。 私钥用于签名文件&am…

蜘蛛搜索引擎_SEO:搜索引擎蜘蛛要引导,不能佛系优化

又是一个不眠的夜晚,工作对生活节奏不断地敲打,我们新一代的年轻小伙不得不进步,满怀热情来挑战我们对于工作的激情,虽然每一天工作都是重复地进行,但是每一天都有我们留下的痕迹,为世界的美好增添一道绚丽…

小程序滴滴车主板块的银行卡管理左滑删除编辑

最近在类似于滴滴软件的一款小程序,工程确实有点大,很多东西都是第一次做。这次记录一下关于左滑删除的一个代码记录。主要的思想就是计算滑动距离的大小来使用css中的 transition 控制滑动的效果,主流的都是控制边距margin来达到左滑的效果。…

华菱重卡仪表指示说明_仪表装置11种常见故障的解决方法

1. 转速表工作不正常或停止工作首先检查转速表背面的黑色3孔插头与插座接触是否良好及电压正常与否。3个端子的连接情况:端子a是电源负极,与仪表盘14孔白色插座上的棕色导线连接后搭铁(仪表盘上所有搭铁点均由棕色导线汇集在一起,并通过胶布包…

ASP .NET SVN emmet 插件

学习 ASP .NET 时间的第三周: 来讲讲如何在 visual studio 2013...上搭载 SVN吧: 废话不多说: One Step: 电脑上已安装 visual studio 2013 等版本(未安装时 红色区域是不存在的) Two Step: 从官网上下载对…

iptables 配置后连接不上数据库_Linux服务器配置-VSFTP服务配置(三)

上文:Linux服务器配置-VSFTP服务配置(二)一、vsftpd服务防火墙配置1、主动(POST)模式 FTP 防火墙配置CentOS6 系统 iptables 的配置iptables -t filter --line-number -nL INPUT#显示现有防火墙规则,查看是否开启20、21号端口。iptables -t filter -I IN…

下标索引必须为正整数类型或逻辑类型_Python3 基本数据类型

Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在Python中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。Python 3中有六个标准的数据类型&#xf…

noip模拟赛 写代码

分析:这其实就是括号匹配题,一眼贪心题,不过一开始贪错了,以为([)]是合法的......其实括号之间不能嵌套. 一开始的想法是尽量往左边填左括号,因为每种括号的数量都确定了,那么左括号和右括号的数量也就确定…

行内元素和块元素以及行内块元素的特点

一、背景 初学html&#xff0c;接触很多标签 <h1>、<p>、<span>、<ul>、<em>等&#xff0c;当写出简单的小页面的时候&#xff0c;例如仅仅是一篇带有标题的文章&#xff0c;标题 <h1>标签单独一行&#xff0c;不管后面有多大的空间&…

软件测试的功能测试和性能测试,大型软件的功能测试流程及性能测试流程

大型软件具有涉及子模块繁多、建设过程复杂、功能全面、性能具有较高要求的特点。依据ISO/IEC 9126软件产品评估标准&#xff0c;需要对软件的功能性、可靠性、可用性、效率、可维护性、可移植性等方面进行评估。因此&#xff0c;需要有一种方法能够对大型软件进行测试&#xf…

vue 分模块打包 脚手架_Vue面试官最爱的底层源码问题,你可以这样回答!

最近看到身边很多人都在投简历&#xff0c;有因为企业裁员的&#xff0c;有因为自己想跳槽的&#xff0c;原因不一&#xff0c;但是最终大家都会需要接触到面试这个事情。但是很多人对待面试不够认真&#xff0c;只会等待结果&#xff0c;不去努力。所以这边想整理一些懒人面试…

re.containerbase.startinternal 子容器启动失败_Python项目容器化实践(二) Docker Machine和Docker Swarm...

前言这篇文章介绍Docker生态中的常被提到的Engine、Machine和Swarm&#xff0c;大家以了解为主&#xff0c;工作需要再深入。EngineDocker Engine其实就是我们常说的「Docker」&#xff0c;它是一个C/S模型(Client/Server)的应用&#xff0c;包含如下组件:Daemon。守护进程&…

基于设备树的TQ2440的中断(2)

下面以按键中断为例看看基于设备数的中断的用法&#xff1a; 设备树&#xff1a; tq2440_key {compatible "tq2440,key";interrupt-parent <&gpf>;interrupts <0 IRQ_TYPE_EDGE_FALLING>, <1 IRQ_TYPE_EDGE_FALLING>;key_3 <&gpf 2…

计算机里有个不能进入的磁盘分区,新电脑只有一个分区怎么办? 教你们如何不进pe给硬盘创建新分区!...

很多朋友新电脑刚买回来打开发现明明自己机械硬盘1T或者1T机械加128G固态&#xff0c;但是却只有一个或者两个分区&#xff0c;但是又不会分区现在教大家如何不用老毛桃大白菜之类的进pe系统里面就能直接创建新分区1 WinR输入diskmgmt.msc2进入磁盘管理可以查看本机的C盘与E盘的…

OSGi中的权限

在上一篇文章中 &#xff0c;我们介绍了为Java应用程序实现沙箱的方法&#xff0c;在其中我们可以安全地运行移动代码 。 这篇文章探讨了如何在OSGi环境中执行相同的操作。 OSGi OSGi规范 为Java定义了一个动态模块系统 。 因此&#xff0c;它是实施那种可以使您的应用程序动…

HTTP简单教程

目录 HTTP简介 HTTP工作原理 HTTP消息结构 客户端请求消息服务器响应消息实例 HTTP请求方法HTTP响应头信息HTTP状态码 HTTP状态码分类HTTP状态码列表 HTTP content-type对照表 HTTP简介 HTTP协议是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;的缩写&…

Reversed-Z详解

在3D渲染管线中&#xff0c;Z这个家伙几乎无处不在&#xff0c;如Z-Buffer&#xff0c;Early-Z&#xff0c;Z-Cull&#xff0c;Z-Test&#xff0c;Z-Write等等&#xff0c;稍有接触图形学的人都会对这些术语有所耳闻。 那么Z到底是什么呢&#xff1f;首先Z当然可以是任意坐标系…

pyqt开发的程序模板_小程序定制开发和模板开发要多少钱?有什么区别?

到现在&#xff0c;小程序开发已经有了1年多的历史&#xff0c;已经达到百万数量级。无论是小程序商城还是小程序游戏&#xff0c;其开发方式不外乎两种&#xff0c;一种是定制开发&#xff0c;另一种是模板开发。对于很多初次接触小程序的客户来说&#xff0c;还不知道小程序的…