【Big Data】HADOOP集群的配置(二)
Hadoop集群的配置(二)
摘要: hadoop集群配置系列文档,是笔者在实验室真机环境实验后整理而得。以便随后工作所需,做以知识整理,另则与博客园朋友分享实验成果,因为笔者在学习初期,也遇到不少问题。但是网上一些文档大多互相抄袭,里面错误百出。笔者结合自学书籍视频等资料,完成这一套配置资料。实验结果和过程经过反复测试无误后方整理出来的。配置过程中,初学者若有实验环境,可以在真机环境下完成,若无条件,可补习下虚拟机与Linux操作系统的基础知识,以及里面对linux常规命令使用,建议读者边配置学学习。(本文原创/整理,转载请标注原文出处: Hadoop集群的配置(二) )
2015年7月12日10:40:04
相关文章
- 【Oracle RAC集群搭建1】 集群概念介绍
- 【Oracle RAC集群搭建2】 ORACLE集群概念和原理
- 【Oracle RAC集群搭建3】 RAC 工作原理和相关组件
- 【Oracle RAC集群搭建4】 缓存融合技术
- 【Oracle RAC集群搭建5】 RAC 特殊问题和实战经验
- 【Oracle RAC集群搭建6】 ORACLE 11 G版本2 RAC在LINUX上使用NFS安装前准备
- 【Oracle RAC集群搭建7】 ORACLE ENTERPRISE LINUX 5.7下DATABASE 11G RAC集群安装
- 【Oracle RAC集群搭建8】 ORACLE ENTERPRISE LINUX 5.7下DATABASE 11G RAC数据库安装
- 【Oracle RAC集群搭建9】 ORACLE ENTERPRISE LINUX 5.7下DATABASE 11G RAC基本测试与使用
【MySql集群搭建】 真机环境下MySQL-Cluster搭建文档
【Hadoop集群搭建1】Hadoop集群的配置
【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 |
用法说明:
修改hdfs-site.xml,添加:
<property>
<name>dfs.hosts</name>
<value>/home/hadoop/hadoop2.2/conf/datanode-allow.list</value>
</property>
<property>
<name>dfs.hosts.exclude</name>
<value>/home/hadoop/hadoop2.2/conf/datanode-deny.list</value>
</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,添加参数:
<property>
<name>mapreduce.jobtracker.hosts.filename</name>
<value>/home/hadoop/hadoop2.2/conf/datanode-allow.list</value>
</property>
<property>
<name>mapreduce.jobtracker.hosts.exclude.filename</name>
<value>/home/hadoop/hadoop2.2/conf/datanode-deny.list</value>
</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配置完
尾注:本系列文档,笔者真机环境测试无误得以分享,纯属原创,若有转载,请注释出处.
【Big Data】HADOOP集群的配置(二)的更多相关文章
- 【Big Data】HADOOP集群的配置(一)
Hadoop集群的配置(一) 摘要: hadoop集群配置系列文档,是笔者在实验室真机环境实验后整理而得.以便随后工作所需,做以知识整理,另则与博客园朋友分享实验成果,因为笔者在学习初期,也遇到不少问 ...
- Hadoop的学习前奏(二)——Hadoop集群的配置
前言: Hadoop集群的配置即全然分布式Hadoop配置. 笔者的环境: Linux: CentOS 6.6(Final) x64 JDK: java version "1.7 ...
- Hadoop集群的配置(一)
摘要: hadoop集群配置系列文档,是笔者在实验室真机环境实验后整理而得.以便随后工作所需,做以知识整理,另则与博客园朋友分享实验成果,因为笔者在学习初期,也遇到不少问题.但是网上一些文档大多互相抄 ...
- hadoop集群单点配置
=================== =============================== ----------------hadoop集群搭建 --------------------- ...
- hadoop 集群的配置
在经过几天折腾,终于将hadoop环境搭建成功,整个过程中遇到各种坑,反复了很多遍,光虚拟机就重新安装了4.5次,接下来就把搭建的过程详细叙述一下 0.相关工具: 1,系统环境说明: 我这边给出我的集 ...
- hadoop集群默认配置和常用配置【转】
转自http://www.cnblogs.com/ggjucheng/archive/2012/04/17/2454590.html 获取默认配置 配置hadoop,主要是配置core-site.xm ...
- Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOS
摘自:http://www.powerxing.com/install-hadoop-cluster/ 本教程讲述如何配置 Hadoop 集群,默认读者已经掌握了 Hadoop 的单机伪分布式配置,否 ...
- hadoop集群默认配置和常用配置
http://www.cnblogs.com/ggjucheng/archive/2012/04/17/2454590.html 获取默认配置 配置hadoop,主要是配置core-site.xml, ...
- Hadoop集群安装配置
一.准备工作 1.首先准备好七台虚拟机,并确保都已经安装配置好jdk. 2.Hadoop3.2.0+jdk1.8自行到官网下载 3.修改好相称的主机名,并在hosts文件中相互添加. ######注意 ...
随机推荐
- Virtual Box配置CentOS7网络(图文教程)
之前很多次安装CentOS7虚拟机,每次配置网络在网上找教程,今天总结一下,全图文配置,方便以后查看. Virtual Box可选的网络接入方式包括: NAT 网络地址转换模式(NAT,Network ...
- IE6/7下空div占用空间的问题
最近注意力没在前端上面,工作碰到这样一个问题,下意识的写了句 font-size:0;line-height:0;哪知道引发了更大的bug.后来插入数据进去的时候都不显示了..再后来百度一番找到,原来 ...
- TODO:小程序开发过程之体验者
TODO:小程序开发过程之体验者 1. 小程序开发过程,先下载开发者并安装开发者工具,现在腾讯开放测试了,普通用户也可以登录开发者工具,如图普通用户登录为调试类型,但是只能建立无AppID的项目 如果 ...
- Win10 IIS本地部署网站运行时图片和样式不正常?
后期会在博客首发更新:http://dnt.dkill.net 异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 启用关闭win功 ...
- 探索ASP.NET MVC5系列之~~~2.视图篇(上)---包含XSS防御和异步分部视图的处理
其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...
- [转]利用URLConnection来发送POST和GET请求
URL的openConnection()方法将返回一个URLConnection对象,该对象表示应用程序和 URL 之间的通信链接.程序可以通过URLConnection实例向该URL发送请求.读取U ...
- 猖獗的假新闻:2017年1月1日起iOS的APP必须使用HTTPS
一.假新闻如此猖獗 刚才一位老同事 打电话问:我们公司还是用的HTTP,马上就到2017年了,提交AppStore会被拒绝,怎么办? 公司里已经有很多人问过这个问题,回答一下: HTTP还是可以正常提 ...
- 前端学HTTP之重定向和负载均衡
前面的话 HTTP并不是独自运行在网上的.很多协议都会在HTTP报文的传输过程中对其数据进行管理.HTTP只关心旅程的端点(发送者和接收者),但在包含有镜像服务器.Web代理和缓存的网络世界中,HTT ...
- 计算机程序的思维逻辑 (60) - 随机读写文件及其应用 - 实现一个简单的KV数据库
57节介绍了字节流, 58节介绍了字符流,它们都是以流的方式读写文件,流的方式有几个限制: 要么读,要么写,不能同时读和写 不能随机读写,只能从头读到尾,且不能重复读,虽然通过缓冲可以实现部分重读,但 ...
- java单向加密算法小结(1)--Base64算法
从这一篇起整理一下常见的加密算法以及在java中使用的demo,首先从最简单的开始. 简单了解 Base64严格来说并不是一种加密算法,而是一种编码/解码的实现方式. 我们都知道,数据在计算机网络之间 ...