Hadoop集群的配置(二)

摘要: 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,添加:

  1. <property>
  2.  
  3. <name>dfs.hosts</name>
  4.  
  5. <value>/home/hadoop/hadoop2.2/conf/datanode-allow.list</value>
  6.  
  7. </property>
  8.  
  9. <property>
  10.  
  11. <name>dfs.hosts.exclude</name>
  12.  
  13. <value>/home/hadoop/hadoop2.2/conf/datanode-deny.list</value>
  14.  
  15. </property>
  • 如果不需要允许列表,就不要创建对应项了。然后创建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,添加参数:

  1. <property>
  2.  
  3. <name>mapreduce.jobtracker.hosts.filename</name>
  4.  
  5. <value>/home/hadoop/hadoop2.2/conf/datanode-allow.list</value>
  6.  
  7. </property>
  8.  
  9. <property>
  10.  
  11. <name>mapreduce.jobtracker.hosts.exclude.filename</name>
  12.  
  13. <value>/home/hadoop/hadoop2.2/conf/datanode-deny.list</value>
  14.  
  15. </property>

然后创建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配置完

上节:Hadoop集群的配置(一)

尾注:本系列文档,笔者真机环境测试无误得以分享,纯属原创,若有转载,请注释出处.

【Big Data】HADOOP集群的配置(二)的更多相关文章

  1. 【Big Data】HADOOP集群的配置(一)

    Hadoop集群的配置(一) 摘要: hadoop集群配置系列文档,是笔者在实验室真机环境实验后整理而得.以便随后工作所需,做以知识整理,另则与博客园朋友分享实验成果,因为笔者在学习初期,也遇到不少问 ...

  2. Hadoop的学习前奏(二)——Hadoop集群的配置

    前言: Hadoop集群的配置即全然分布式Hadoop配置. 笔者的环境: Linux:  CentOS 6.6(Final) x64   JDK:    java version "1.7 ...

  3. Hadoop集群的配置(一)

    摘要: hadoop集群配置系列文档,是笔者在实验室真机环境实验后整理而得.以便随后工作所需,做以知识整理,另则与博客园朋友分享实验成果,因为笔者在学习初期,也遇到不少问题.但是网上一些文档大多互相抄 ...

  4. hadoop集群单点配置

    =================== =============================== ----------------hadoop集群搭建 --------------------- ...

  5. hadoop 集群的配置

    在经过几天折腾,终于将hadoop环境搭建成功,整个过程中遇到各种坑,反复了很多遍,光虚拟机就重新安装了4.5次,接下来就把搭建的过程详细叙述一下 0.相关工具: 1,系统环境说明: 我这边给出我的集 ...

  6. hadoop集群默认配置和常用配置【转】

    转自http://www.cnblogs.com/ggjucheng/archive/2012/04/17/2454590.html 获取默认配置 配置hadoop,主要是配置core-site.xm ...

  7. Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOS

    摘自:http://www.powerxing.com/install-hadoop-cluster/ 本教程讲述如何配置 Hadoop 集群,默认读者已经掌握了 Hadoop 的单机伪分布式配置,否 ...

  8. hadoop集群默认配置和常用配置

    http://www.cnblogs.com/ggjucheng/archive/2012/04/17/2454590.html 获取默认配置 配置hadoop,主要是配置core-site.xml, ...

  9. Hadoop集群安装配置

    一.准备工作 1.首先准备好七台虚拟机,并确保都已经安装配置好jdk. 2.Hadoop3.2.0+jdk1.8自行到官网下载 3.修改好相称的主机名,并在hosts文件中相互添加. ######注意 ...

随机推荐

  1. 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代

    2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...

  2. 日期格式代码出现两次的错误 ORA-01810

    错误的原因是使用了两次MM . 一.Oracle中使用to_date()时格式化日期需要注意格式码 如:select to_date('2005-01-01 11:11:21','yyyy-MM-dd ...

  3. 理解CSS外边距margin

    前面的话   margin是盒模型几个属性中一个非常特殊的属性.简单举几个例子:只有margin不显示当前元素背景,只有margin可以设置为负值,margin和宽高支持auto,以及margin具有 ...

  4. FFmpeg学习6:视音频同步

    在上一篇文章中,视频和音频是各自独立播放的,并不同步.本文主要描述了如何以音频的播放时长为基准,将视频同步到音频上以实现视音频的同步播放的.主要有以下几个方面的内容 视音频同步的简单介绍 DTS 和 ...

  5. 渗透测试工具BurpSuite做网站的安全测试(基础版)

    渗透测试工具BurpSuite做网站的安全测试(基础版) 版权声明:本文为博主原创文章,未经博主允许不得转载. 学习网址: https://t0data.gitbooks.io/burpsuite/c ...

  6. 深入理解CSS中的margin负值

    前面的话 margin属性在实际中非常常用,也是平时踩坑较多的地方.margin折叠部分相信不少人都因为这样那样的原因中过招.margin负值也是很常用的功能,很多特殊的布局方法都依赖于它.它看似简单 ...

  7. .net erp(办公oa)开发平台架构概要说明之表单设计器

    背景:搭建一个适合公司erp业务的开发平台.   架构概要图: 表单设计开发部署示例图    表单设计开发部署示例说明1)每个开发人员可以自己部署表单设计至本地一份(当然也可以共用一套开发环境,但是如 ...

  8. c#比较两个数组的差异

    将DataTable中某一列数据直接转换成数组进行比较,使用的Linq,要引用命名空间using System.Linq; string[] arrRate = dtRate.AsEnumerable ...

  9. 多线程同步工具——Lock

    本文原创,转载请注明出处. 参考文章: <"JUC锁"03之 公平锁(一)> <"JUC锁"03之 公平锁(二)> 锁分独占锁与共享锁, ...

  10. Postman - 功能强大的 API 接口请求调试和管理工具

    Postman 是一款功能强大的的 Chrome 应用,可以便捷的调试接口.前端开发人员在开发或者调试 Web 程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的 Fi ...