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 的操作,就是文件系统的基本操作,比如文件的创建.修改.删除.修改权限等,文件夹的创建.删除.重命名等. ...
随机推荐
- oracle 体系结构
oracle 体系结构 数据库的体系结构是指数据库的组成.工作过程与原理,以及数据在数据库中的组织与管理机制. 1. oracle工作原理: 1).在数据库服务器上启动Oracle实例:2).应用程序 ...
- 向modesim中添加alter库 (或者在每次仿真时将库文件加入仿真文件夹一起编译)
在ModelSim中进行仿真需要加入Quartus提供的仿真库,原因是下面三个方面: ·Quartus不支持Testbench: ·调用了megafunction或者lpm库之类的Alte ...
- .Net Framework运行机制
首先谈谈.net framework的组成 主要是有两大部分组成:CLR(公共语言运行库)和FCL(Framework类库) CLR的主要功能:和Java虚拟机一样也是一个运行时环境,是一个可由多种编 ...
- 说说Statement、PreparedStatement和CallableStatement的异同(转)
1.Statement.PreparedStatement和CallableStatement都是接口(interface). 2.Statement继承自Wrapper.PreparedStatem ...
- 【java】:多表关联、排序
SELECT * FROM (SELECT coll.collection_id, coll.report_id, coll.new_id, news.title,news.abstract_txt, ...
- Mono for android 如何动态添加View,线程内部如何更新UI.
貌似所有设计到UI的程序原理都是一样的,子线程是不能够更新UI状态的,所以就必须使用UI自身或者第三方来更新UI. 如 在WinForm 中 就可以使用Control.Invoke(Action ac ...
- Linux 忘记root登录密码解决方法
很多朋友经常会忘记Linux系统的root密码,linux系统忘记root密码的情况该怎么办呢?重新安装系统吗?当然不用!进入单用户模式更改一下root密码即可. 步骤如下: 重启linux系统 3 ...
- thinkphp3.2.3批量执行sql语句(带事务)
/** * 事务封装方法 * @access public 将此方法放入框架model.class.php中 * @param array $sqls 要执行的sql数组或语句 * @param ar ...
- android手机调试时不能打印Logcat日志信息
方法: 1.在拨号界面输入:*#*#2846579#*#* 进入测试菜单界面 2.Project Menu–后台设置–LOG设置 3.LOG开关–LOG打开 LOG级别设置–VERBOSE 4. ...
- [转]jQuery实现清空table表格除首行外的所有数据
1.其实网上有很多版本,试了好几个都不行,最后还是查到了一个非常方便的:不会清除表格第一行表头部分. 其中J_tab_fam是table的id. 1 $("#J_tab_fam tr:no ...