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

初始Windows程序

1.属性 窗体标题 Name 窗体的图标 Icon 背景图片 BackgroundImage 背景颜色 BackColor 最大化按钮 MaxIMonBox 最小化按钮 Minimun 窗体边框样式 FormBorderStyle 窗体初始位置 StartPosition 窗体状态 WindowsState 背景图片拉伸 BackgroundImageLayout 窗体标题 Te…

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

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

HTML基础实例

本节列举了一些简单的HTML例子&#xff0c;帮助大家更感性地认识HTML标签。是不是对一些标签还不熟悉&#xff1f;别担心&#xff0c;后面几个章节会有详细说明&#xff0c;先跑几个例子看看效果吧。 HTML文档相关标签所有HTML文档必须以<!DOCTYPE html>声明开头。 HTM…

签署Java代码

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

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

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

SQL数据库排序规则修改

修改SQL数据库排序规则: 1.修改为单用户模式 2.然后关闭所有的查询窗口&#xff0c;修改Options的Collocation属性&#xff0c;如&#xff1a;Chinese_PRC_90_CI_AS 3.再修改为多用户模式 例如&#xff1a; ALTER DATABASE SRMain SET SINGLE_USER WITH ROLLBACK IMMEDIATE Go…

属于计算机病毒主要特征的是,[单选] 不属于计算机病毒的主要特征的是()

[单选] 不属于计算机病毒的主要特征的是()更多相关问题已知两直线l1&#xff1a;mx&#xff0b;y&#xff0d;20和l2&#xff1a;(m&#xff0b;2)x&#xff0b;y&#xff0b;40与两坐标轴围成的四边形有外接圆&#xff0c;则实数m的值为()A&#xff0e;1B&#xff0e;&#xf…

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

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

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

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

WADL中的JSON模式

在其他工作之间&#xff0c;我最近一直在审查WADL规范&#xff0c;以解决一些文档问题&#xff0c;以生成更新版本。 因为显而易见的一件事是缺少对XML以外的语言的语法支持-是的&#xff0c;您可以使用JSON <-> XML Schema的映射&#xff0c;但这对于JSON纯粹主义者而言…

怎么用python自制计算公式_如何使用Python和Numpy计算r平方?

我最初发布下面的基准是为了推荐numpy.corrcoef&#xff0c;愚蠢地没有意识到原来的问题已经使用了corrcoef&#xff0c;实际上是在询问高阶多项式拟合。我已经使用statsmodels为多项式r-squared问题添加了一个实际的解决方案&#xff0c;并且我已经离开了原始的基准测试&#…

ASP .NET SVN emmet 插件

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

Python之路3【知识点】白话Python编码和文件操作(截载)

无意发现这篇文章讲的比较好&#xff0c;存下来供参考&#xff1a; http://www.cnblogs.com/luotianshuai/p/5735051.html转载于:https://www.cnblogs.com/shikaihong/p/7778880.html

Http协议入门

[在此处输入文章标题] 1 web web入门 1&#xff09;web服务软件作用: 把本地资源共享给外部访问 2&#xff09;tomcat服务器基本操作 &#xff1a; 启动: %tomcat%/bin/startup.bat 关闭&#xff1a; %tomcat%/bin/shutdown.bat 访问tomcat主页&#xff1a; http://loca…

计算机硬件系统都是看得见的,计算机组成硬件系统).doc

计算机组成硬件系统)各位计算机协会的成员大家好&#xff0c;很高兴大家能陪我们走过这段难忘的时光。为了让大家更好的学到东西&#xff0c;我们特地将计算机方面的东西整理成技术文档&#xff0c;共大家使用&#xff0c;祝大家学得愉快&#xff01;湘信院计算机协会一&#x…

Google Guava –期货

这篇文章是我在Google Guava上的系列文章的延续&#xff0c;这次涵盖了Future。 Futures类是用于使用Future / ListenableFuture接口的静态实用程序方法的集合。 Future是提交给ExecutorService的异步任务&#xff08;可运行或可调用&#xff09;的句柄。 Future界面提供以下方…

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

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

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

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

noip模拟赛 写代码

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