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 的操作,就是文件系统的基本操作,比如文件的创建.修改.删除.修改权限等,文件夹的创建.删除.重命名等. ...
随机推荐
- 匿名访问ReportService报表服务器(一)
我的数据库版本是sql server 2008 r2,系统环境是windows server2008. 对于sql server 2008 r2上报rs报表的匿名访问问题,我这边尝试过两个可行方案: ...
- python python 入门学习之网页数据爬虫搜狐汽车数据库
自己从事的是汽车行业,所以首先要做的第一个程序是抓取搜狐汽车的销量数据库(http://db.auto.sohu.com/cxdata/): 数据库提供了07年至今的汽车月销量,每个车型对应一个xml ...
- 为什么不能访问django自带的索引页
通过HTTP://192.168.160.128:8000访问虚拟机上的django索引页出现“ 无法访问此网站 192.168.160.128 拒绝了我们的连接请求. ” 是什么原因呢?费了好大一番 ...
- vim深入研究
About VIM--Unix及类Unix系统文本编辑器 Vim是一个类似于Vi的著名的功能强大.高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性.VIM是纯粹的自由软件. Vim普遍被推崇 ...
- ssh整合,导入structs包后报错 getAnnotation(AnnotatedElement ae,Class<T> annotatetype)找不到
今天在整合ssh(spring-framework-3.2.5.RELEASE-dist+struts-2.3.15.3-all+hibernate-release-4.2.6.Final)环境的时候 ...
- 大前端学习笔记整理【七】HTTP协议以及http与https的区别
前言 还是老样子,新博客开始前总是想先啰嗦几句...HTTP协议其实在当初学习java时老师就有提过...但是...反正就那么过去了... 这段时间公司的项目正好要求做https的转换和迁移,然后自己 ...
- 自己关于cocoapods的使用的一些理解和总结
老大让我自己学习用一下cocoapods的使用,于是自己上网查了很多的信息,在安装使用过程中,总是出现了很多问题,然后发现有些人的教程好像并不完全好用,我的感觉是应该每个人遇到的问题都不尽相同,所以 ...
- TCP/IP入门(3) --传输层
原文:http://blog.csdn.net/zjf280441589/article/category/1854365 传输层的主要功能 1)传输层为应用进程之间提供端到端的逻辑通信(网络层是为主 ...
- 原生ajax基础
/*ajax对象的成员常用属性:responseText:以字符串形式接收服务器端返回的信息responseXML:以Xml Document对象形式接收服务器返回的信息readyState:返回当前 ...
- nginx负载均衡最新
配置conf文件 #user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log no ...