Hadoop开发第4期---分布式安装
一、复制虚拟机
由于Hadoop的集群安装需要多台机器,由于条件有限,我是用虚拟机通过克隆来模拟多台机器,克隆方式如下图所示
点击克隆弹出下图的界面
点击下一步,弹出下图界面
在这里我们选择完整克隆,来创建一个单独的虚拟机,点击下一步,如下图所示
二、集群的概念
2.1 集群的概念
<1> 通过多台计算机完成同一个工作。达到更高的效率
<2> 两机或多机内容、工作过程等完全一样。如果一台死机,另一台可以起作用。在此,看一下Hadoop集群物理分布图,如下图所示
集群中有很多服务器,黄色表示主节点,主节点只在一台服务器上,绿色为从节点分布在多台服务器上。但由于条件有限,我们就设置1个主节点,两个从节点。在实际应用中我们则使用真正的服务器来搭建Hadoop环境,由于主节点负责调度管理,一般选择内存比较好的服务器作为主节点 。
2.2 分布式结构
主节点(1个,是hadoop0):NameNode、JobTracker、SecondaryNameNode
从节点(2个,是hadoop1、hadoop2):DataNode、TaskTracker
克隆两个虚拟机,分别为Centos_0,Centos_1,原来的虚拟机叫Centos,他们的配置如下图所示,所以在虚拟机克隆完成以后,要按照下图修改主机名,ip等。
2.3 修改配置
<1> 编辑各个节点的/etc/hosts,在该文件中含有所有节点的ip与hostname的映射信息命令如下:
vi /etc/sysconfig/network
vi /etc/hosts
reboot –h now
<2> 将主节点的下面内容复制到,从节点
/usr/local/hadoop/conf/core-site.xml
/usr/local/hadoop/conf/ mapred-site.xml
2.4 配置ssh
2.4.1 各节点重新产生ssh加密文件
<1> 操作如下:
vi /etc/hosts
添加:
192.1.14.24 hadoop
192.1.14.76 hadoop0
192.1.14.77 hadoop1
<2> 将该文件复制到其他节点(此时需要输入密码,设置ssh免密码登陆之后可免密码登录)
scp /etc/hosts hadoop0: /etc/hosts
scp /etc/hosts hadoop1: /etc/hostscd /root/.ssh/
ls
rm -rf *
lscd /usr/local/
rm –rf*
lsssh-keygen -t rsa
cd /root/.ssh/
cat id_rsa.pub >>authorized_keys
ssh localhost
exit
ssh 主机名
2.4.2 两两节点之间的SSH免密码登陆
要想集群中机器互相连通,就得实现机器之间免密码登录,但是现在我们的机器,只能免密码登陆自己的机器。还不能免密码登陆集群中其他机器,如当我们在hadoop主机免密码登陆主机hadoop0时,会显示如下图所示的界面
所以我们就要设置两两节点之间的SSH免密码登陆,以hadoop为例,hadoop登陆hadoop0时,hadoop0会给hadoop发一个字符串让hadoop的私钥来加密该字符串返回给hadoop0,然后hadoop0用自己的公钥也对该字符串做一次加密,然后比对这个经过加密的字符串,若相同则证明可登陆,hadoop免密码登陆hadoop0的过程如下图所示
所以hadoop主机要登录hadoop0,那么我们就要复制hadoop的公钥到hadoop0,这样就相当于用hadoop的公钥生成str2,这样就保证了str1和str2的相同,我们知道公钥存放在authorized_keys文件中,那么我们先看一下hadoop0主机的公钥钥信息,如下图所示
在hadoop终端执行以下命令:
ssh-copy-id -i hadoop0
将当前主机(hadoop)的公钥复制到hadoop0,一次类推将hadoop1的公钥也复制到hadoop0,然后hadoop0就拥有了三台主机的公钥,下面可以采用简便方法将hadoop0的authorized_keys文件复制到其他两台机器上。
scp /root/.ssh/authorized_keys hadoop1:/root/.ssh/
此时再次查看hadoop0的公钥中拥有了hadoop的公钥,如图(1)所示。然后在hadoop登陆hadoop,则登陆成功,如图(2)所示
图 (1)
图(2)
2.5 配置Hadoop
hadoop的基本安装步骤在请参照伪分布安装步骤。下面说一下安装完以后,需要的操作
<1> 把hadoop的hadoop目录下的logs和tmp删除
执行命令 :
cd /usr/local/hadoop
ls
rm -rf logs/
rm -rf tmp/
<2> 把hadoop中的jdk、hadoop文件夹复制到hadoop0和hadoop1节点
scp -r /usr/local/jdk hadoop0:/usr/local/ -r 表示文件类型为文件夹
<3> 把hadoop的/etc/profile复制到hadoop0和hadoop1节点,在目标节点中执行source /etc/profile
2.6设置主从节点
我设置hadoop为主节点,编辑hadoop的配置文件slaves,改为从节点的hostname,分别是hadoop0和hadoop1
执行命令:vi /usr/local/hadoop/conf/slaves
添加: hadoop0
hadoop1
2.7 格式化启动
格式化,在hadoop节点执行hadoop namenode -format
启动,在hadoop0节点执行start-all.sh,启动成功如图(3)所示。hadoop0和hadoop1的进程如图(4),(5)所示。
图 (3)
图 (4)
图(5)
注意:对于配置文件core-site.xml和mapred-site.xml在所有节点中都是相同的内容,因为这里分别配置的是NameNode和Jobtracker的端口号。
2.8 通过浏览器查看
首先在C:\Windows\System32\drivers\etc,目录下的hosts文件,添加如下内容:
192.1.14.24 hadoop
192.1.14.76 hadoop0
192.1.14.77 hadoop1
在浏览器输入http://hadoop:50070,如图2.11所示。
图 2.11
点击Live Nodes,如图2.12所示。
图 2.12
2.9 变更分布结构
<1> 将SecondaryNameNode移动到一个新的独立节点
执行命令:vi /usr/local/hadoop/conf/masters
里面的内容是SecondaryNameNode的主机名localhost,我们可以讲localhost修改为其他主机名。
<2> 将Namenode和JobTracker,分配到不同节点,在此我们要修改core-site.xml和mapred-site.xml两个文件,core-site.xml文件决定NameNode的端口地址和临时存放目录,mapred-site.xml决定JobTracker的端口地址。设置完之后,各节点要单独起进程。
三、动态的增加一个hadoop节点
在实际应用过程中,为了提高Hadoop集群的应用性能,会向Hadoop集群中增添节点,由于主节点只有一个可以换不会增加,所以在Hadoop集群当中一般是增加从节点,动态添加节点步骤如下:
<1> 配置新节点的环境,我再次克隆一个虚拟机名称为Centos_2,该机器的信息如下图3.1所示。
图 3.1
<2> 把新节点的hostname配置到主节点的slaves文件中
<3> 在新节点,启动进程
hadoop-daemon.sh start datanode
hadoop-daemon.sh start tasktracker
<4> 在主节点执行脚本 hadoop dfsadmin -refreshNodes
四、动态的下架一个hadoop节点
现在我们将,刚刚添加的节点hadoop2下架,在实际中,最简单的方式就是将服务器关闭即可,我用虚拟机模拟一下,把hadoop2节点上的hadoop对应的进程关闭即可,执行命令如下:hadoop-daemon.sh stop datanode
关闭以后我们会发现,NameNode的web端口上hadoop2节点的LastContact字段的值会不断增加。DataNode每次启动时都会向NameNode汇报,NameNode会记录他的访问时间,NameNode用当前访问时间减去上次访问时间,就得出LastContact的值,就是多长时间未访问。由于有可能是网络问题造成短暂掉线,所以NameNode会等待一段时间,默认等10分钟,十分钟之后,会将他视为死节点,为了防止数据丢失所以在实际中副本数一般不会设为1,会设为2以上,当某个节点死掉以后,可以通过副本找回数据。
图 4.1
五、安全模式
NameNode在启动的时候首先进入安全模式,如果datanode丢失的block达到一定的比例(1- dfs.safemode.threshold.pct),则系统会一直处于安全模式状态即只读状态。 dfs.safemode.threshold.pct(缺省值0.999f)表示HDFS启动的时候,如果DataNode上报的block个数达到了元数据记录的block个数的0.999倍才可以离开安全模式,否则一直是这种只读模式。如果设为1则HDFS永远是处于SafeMode。
hadoop dfsadmin -safemode enter | leave | get |wait
Hadoop开发第4期---分布式安装的更多相关文章
- Hadoop生态圈-hbase介绍-伪分布式安装
Hadoop生态圈-hbase介绍-伪分布式安装 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.HBase简介 HBase是一个分布式的,持久的,强一致性的存储系统,具有近似最 ...
- hadoop 2.7.3伪分布式安装
hadoop 2.7.3伪分布式安装 hadoop集群的伪分布式部署由于只需要一台服务器,在测试,开发过程中还是很方便实用的,有必要将搭建伪分布式的过程记录下来,好记性不如烂笔头. hadoop 2. ...
- centos 7下Hadoop 2.7.2 伪分布式安装
centos 7 下Hadoop 2.7.2 伪分布式安装,安装jdk,免密匙登录,配置mapreduce,配置YARN.详细步骤如下: 1.0 安装JDK 1.1 查看是否安装了openjdk [l ...
- Hadoop开发第3期---Hadoop的伪分布式安装
一.准备工作 1. 远程连接工具的安装 PieTTY 是在PuTTY 基础上开发的,改进了Putty 的用户界面,提供了多语种支持.Putty 作为远程连接linux 的工具,支持SSH 和telne ...
- hadoop 0.20.2伪分布式安装详解
adoop 0.20.2伪分布式安装详解 hadoop有三种运行模式: 伪分布式不需要安装虚拟机,在同一台机器上同时启动5个进程,模拟分布式. 完全分布式至少有3个节点,其中一个做master,运行名 ...
- Hadoop、Zookeeper、Hbase分布式安装教程
参考: Hadoop安装教程_伪分布式配置_CentOS6.4/Hadoop2.6.0 Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOS ZooKeeper-3.3 ...
- Centos 6.5 hadoop 2.2.0 全分布式安装
hadoop 2.2.0 cluster setup 环境: 操作系统:Centos 6.5 jdk:jdk1.7.0_51 hadoop版本:2.2.0 hostname ip master ...
- Hadoop + Hive + HBase + Kylin伪分布式安装
问题导读 1. Centos7如何安装配置? 2. linux网络配置如何进行? 3. linux环境下java 如何安装? 4. linux环境下SSH免密码登录如何配置? 5. linux环境下H ...
- Hadoop开发第6期---HDFS的shell操作
一.HDFS的shell命令简介 我们都知道HDFS 是存取数据的分布式文件系统,那么对HDFS 的操作,就是文件系统的基本操作,比如文件的创建.修改.删除.修改权限等,文件夹的创建.删除.重命名等. ...
随机推荐
- DSP(2) -- 离散时间信号的序列运算
1.信号相加:这是一种对应的样本与样本之间的相加. 在Matlab中它可用算术运算符“+”实现,然后x1和x2的长度必须相等.如果序列不等,或者长度虽然相等但采样的位置不同,就不能用运算符“+”了.我 ...
- zookeeper学习(一)安装、配置、运行
说明:zookeeper完全可以standalone,也可以伪集群形式,当然生产中都是集群形式.另外,也可以在windows下运行. 如果只是研究用,完全可以在windows下使用standalone ...
- wpf 空白汉字占位符
<TextBlock xml:space="preserve" Text="主 编" /> 表示一个汉字占位符
- flex柱状图
柱状图的展现是通过flex自带的控件实现 控件解析:<mx:ColumnChart id = "columns" dataProvider = "{dataSour ...
- 【Java】使用iText生成PDF文件
iText介绍 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转 ...
- layout优化实践
昨天确定了启动时,inflate耗时太多,当时不知道怎么回事,去Trinea的博客一逛,发现原来是需要进行layout优化,跟着他们的步伐,做了下面的修改. 1.据说在lint前是一款layout工具 ...
- Unity加载模块深度解析(Shader)
作者:张鑫链接:https://zhuanlan.zhihu.com/p/21949663来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 接上一篇 加载模块深度解析(二 ...
- python 使用字符串名调用类以及调用类方法名
在python中,有时调用者仅知道类名和类方法,不负责实际的函数调用,而是将要调用的类名和类方法告诉一个中间函数,由中间函数负责实际调用函数.中间函数需以被告知的字符串调用类和类方法. ...
- IAR FOR ARM的安装及破解
本博文主要是介绍如何安装以及破解IAR FOR ARM . 1.下载IAR FOR ARM以及注册机 IAR FOR ARM下载:http://pan.baidu.com/s/1i5t1qF7 注册机 ...
- STM32正交编码器驱动电机
1.编码器原理 什么是正交?如果两个信号相位相差90度,则这两个信号称为正交.由于两个信号相差90度,因此可以根据两个信号哪个先哪个后来判断方向. 这里使用了TI12模式,例如当T1上升 ...