博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个4节点Hadoop集群的配置示例
阅读量:5754 次
发布时间:2019-06-18

本文共 2934 字,大约阅读时间需要 9 分钟。

环境:

操作系统:CentOS 6.5 64bit

Hadoop:Version 1.2.1

Servers:hadoopnamenode,hadoop2ndnamenode,hadoopdatanode1,hadoopdatanode2

注:为方便起见,在这4台server上,我都直接使用root账户进行操作

 

下载及环境变量设置:

在所有4台server上:

从Apache网站下载hadoop-1.2.1-bin.tar.gz,解压后放置在某个目录下,我放在了/usr/local下,为方便起见,我把目录hadoop-1.2.1改名为hadoop。

修改.bashrc,添加下面的环境变量:

export HADOOP_PREFIX=/usr/local/hadoop

export PATH=$PATH:$HADOOP_PREFIX/bin

 

配置hosts文件:

在/etc/hosts中添加:

153.65.170.11  hadoopnamenode

153.65.170.45  hadoop2ndnamenode

153.65.171.174  hadoopdatanode1

153.65.171.24  hadoopdatanode2

 

配置ssh

在hadoopnamenode上执行:

ssh-keygen//生成公钥、私钥

ssh-copy-id   –i   ~/.ssh/id_rsa.pub   root@hadoop2ndnamenode//将hadoopnamenode的公钥copy到其它三台server上

ssh-copy-id   –i   ~/.ssh/id_rsa.pub   root@hadoopdatanode1

ssh-copy-id   –i   ~/.ssh/id_rsa.pub   root@hadoopdatanode2

这么做的目的是可以不需要密码从hadoopnamenode上ssh到其它三台server上。经过ssh-copy-id后,这个公钥实际上会被添加到其它三台server的~/.ssh/authorized_keys文件中。

例如要从hadoopnamenode登录hadoop2ndnamenode,其流程大概是:hadoop2ndnamenode向hadoopnamenode发送一段随机字符串,hadoopnamenode用自己的私钥加密后,再发回来。hadoop2ndnamenode用事先储存的hadoopnamenode公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。

 

配置Hadoop

一般地,我们将使用下面的命令启动hdfs(即name node, secondary name node, data node)及MapReduce:

/usr/local/hadoop/bin/start-dfs.sh

/usr/local/hadoop/bin/start-mapred.sh

start-dfs.sh的流程大概是这样:

  1. 执行该命令的机器自动成为name node(以及job tracker),
  2. 启动/usr/local/hadoop/conf /slaves中列出的所有机器并作为data node(以及task tracker),
  3. 启动/usr/local/hadoop/conf /masters中列出的所有机器并作为secondary name node。

start-mapred.sh的流程类似:

  1. 执行该命令的机器自动成为job tracker,
  2. 启动/usr/local/hadoop/conf /slaves中列出的所有机器并作为task tracker

注:conf/masters文件往往给人带来困惑,直观上让人觉得它是为配置name node所用,但是因为(1)的原因,name node是不需要特别配置到conf/masters中,需要配置的只有secondary name node。

 

根据以上描述,我们可以开始修改hadoopnamenode上的masters文件,删除原内容,添加一行:

hadoop2ndnamenode

修改hadoopnamenode上的slaves文件,删除原内容,添加两行:

hadoopdatanode1

hadoopdatanode2

 

除此之外,需要在hadoopdatanode1与hadoopdatanode2上作出配置,使得data node知道name node,task tracker知道job tracker。所以分别修改hadoopdatanode1与hadoopdatanode2上的conf/core-site.xml:

<configuration>

  <property>

    <name>fs.default.name</name>

    <value>hdfs://hadoopnamenode:10001</value>

  </property>

</configuration>

及conf/mapred-site.xml:

<configuration>

  <property>

    <name>mapred.job.tracker</name>

    <value>hadoopnamenode:10002</value>

  </property>

</configuration>

 

格式化name node

在hadoopnamenode上执行:

hadoop  namenode  -format

 

启动Hadoop

首先,在hadoopnamenode上执行下面命令来启动所有name node, secondary name node, data node:

start-dfs.sh

可以使用jps命令在4台server上查看当前运行的java进程,正常情况你会看到:

hadoopnamenode上有进程:NameNode

hadoop2ndnamenode上有进程:SecondaryNameNode

hadoopdatanode1/hadoopdatanode2上有进程:DataNode

其次,在hadoopnamenode上执行下面命令来启动所有job tracker, task tracker:

start-mapred.sh

继续使用jps命令在4台server上查看当前运行的java进程,正常情况你会看到:

hadoopnamenode上有进程:NameNode, JobTracker

hadoop2ndnamenode上有进程:SecondaryNameNode

hadoopdatanode1/hadoopdatanode2上有进程:DataNode, TaskTracker

 

关闭Hadoop

在hadoopnamenode上:

stop-mapred.sh

stop-dfs.sh

 

其它:

Name node管理界面:

Job tracker 管理界面:

 

转载于:https://www.cnblogs.com/morvenhuang/p/4193554.html

你可能感兴趣的文章
关于爱情只有一句忠告
查看>>
F#初学笔记06
查看>>
实战:将企业域名解析委派给企业DNS服务器
查看>>
在Lync 2013环境部署Office Web Apps
查看>>
微软大会Ignite,你准备好了么?
查看>>
读书笔记-高标管事 低调管人
查看>>
Master带给世界的思考:是“失控”还是进化
查看>>
用户和开发者不满苹果iCloud问题多多
查看>>
java.lang.UnsatisfiedLinkError:no dll in java.library.path终极解决之道
查看>>
我的工具:文本转音频文件
查看>>
【许晓笛】从零开始运行EOS系统
查看>>
【跃迁之路】【460天】程序员高效学习方法论探索系列(实验阶段217-2018.05.11)...
查看>>
C++入门读物推荐
查看>>
TiDB 源码阅读系列文章(七)基于规则的优化
查看>>
Spring之旅第八站:Spring MVC Spittr舞台的搭建、基本的控制器、请求的输入、表单验证、测试(重点)...
查看>>
数据结构与算法——常用排序算法及其Java实现
查看>>
你所不知的Webpack-多种配置方法
查看>>
webpack+typescript+threejs+vscode开发
查看>>
python读excel写入mysql小工具
查看>>
如何学习区块链
查看>>