前面我搭建的Hadoop都是单机伪分布式的,并不能真正感受到Hadoop的最大特点,分布式存储和分布式计算。所以我打算在虚拟机中同时开启3台机器,实现分布式的Hadoop群集。

1.准备3台Ubuntu Server

1.1复制出3台虚拟机

我们可以用之前编译和安装好Hadoop的虚拟机作为原始版本,在VirtualBox中复制三台新的虚拟机出来,也可以完全重新安装一台全新的Ubuntu Server,然后在VirtualBox中复制出2台,就变成了3台虚拟机。

1.2修改主机名

主机名保存在/etc/hostname文件中,我们可以运行

sudo vi /etc/hostname

命令,然后为三台机器起不同的名字,这里我们就分别起名:

master

slave01

slave02

1.3修改为固定IP

Ubuntu的IP地址保存到/etc/network/interfaces文件中,我们需要为3台虚拟机分别改为固定的IP,这里我的环境是在192.168.100.*网段,所以我打算为master改为192.168.100.40,操作如下:

sudo vi /etc/network/interfaces

然后可以看到每个网卡的配置,我这里网卡名是叫enp0s3,所以我改对应的内容为:

# The primary network interface
auto enp0s3
iface enp0s3 inet static
address 192.168.100.40
gateway 192.168.100.1
netmask 255.255.255.0

对slave01改为192.168.100.41,slave02改为192.168.100.42。

1.4修改Hosts

由于三台虚拟机是使用的默认的DNS,所以我们需要增加hosts记录,才能直接用名字相互访问。hosts文件和Windows的Hosts文件一样,就是一个域名和ip的对应表。

编辑hosts文件:

sudo vi /etc/hosts

增加三条记录:

192.168.100.40  master
192.168.100.41  slave01
192.168.100.42  slave02

1.5重启

这一切修改完毕后我们重启一下三台机器,然后可以试着各自ping master,ping slave01 ping slave02看能不能通。按照上面的几步操作,应该是没有问题的。

1.6新建用户和组

这一步不是必须的,就采用安装系统后的默认用户也是可以的。

sudo addgroup hadoop

sudo adduser --ingroup hadoop hduser

为了方便,我们还可以把hduser添加到sudo这个group中,那么以后我们在hduser下就可以运行sudo xxx了。

sudo adduser hduser sudo

切换到hduser:

su – hduser

1.7配置无密码访问SSH

在三台机器上首先安装好SSH

sudo apt-get install ssh

然后运行

ssh-keygen

默认路径,无密码,会在当前用户的文件夹中产生一个.ssh文件夹。

接下来我们先处理master这台机器的访问。我们进入这个文件夹,

cd .ssh

然后允许无密码访问,执行:

cp id_rsa.pub authorized_keys

然后要把slave01和slave02的公钥传给master,进入slave01

scp ~/.ssh/id_rsa.pub hduser@master:/home/hduser/.ssh/id_rsa.pub.slave01

然后在slave02上也是:

scp ~/.ssh/id_rsa.pub hduser@master:/home/hduser/.ssh/id_rsa.pub.slave02

将 slave01 和 slave02的公钥信息追加到 master 的 authorized_keys文件中,切换到master机器上,执行:

cat id_rsa.pub.slave01 >> authorized_keys
cat id_rsa.pub.slave02 >> authorized_keys

现在authorized_keys就有3台机器的公钥,可以无密码访问任意机器。只需要将authorized_keys复制到slave01和slave02即可。在master上执行:

scp authorized_keys hduser@slave01:/home/hduser/.ssh/authorized_keys
scp authorized_keys hduser@slave02:/home/hduser/.ssh/authorized_keys

最后我们可以测试一下,在master上运行

ssh slave01

如果没有提示输入用户名密码,而是直接进入,就说明我们配置成功了。

同样的方式测试其他机器的无密码ssh访问。

2.安装相关软件和环境

如果是直接基于我们上一次安装的单机Hadoop做的虚拟机,那么这一步就可以跳过了,如果是全新的虚拟机,那么就需要做如下操作:

2.1配置apt source,安装JDK

sudo vi /etc/apt/sources.list
打开后把里面的us改为cn,如果已经是cn的,就不用再改了。然后运行:
sudo apt-get update
sudo apt-get install default-jdk

2.2下载并解压Hadoop

去Hadoop官网,找到最新稳定版的Hadoop下载地址,然后下载。当然如果是X64的Ubuntu,我建议还是本地编译Hadoop,具体编译过程参见这篇文章
wget http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz
下载完毕后然后是解压
tar xvzf hadoop-2.7.3.tar.gz
最后将解压后的Hadoop转移到正式的目录下,这里我们打算使用/usr/local/hadoop目录,所以运行命令:
sudo mv hadoop-2.7.3 /usr/local/hadoop

3.配置Hadoop

3.1配置环境变量

编辑.bashrc或者/etc/profile文件,增加如下内容:

# Java Env
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

export JRE_HOME=$JAVA_HOME/jre

export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JRE_HOME/lib

export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

# Hadoop Env

export HADOOP_HOME=/usr/local/hadoop

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

3.2进入Hadoop的配置文件夹:

cd /usr/local/hadoop/etc/hadoop

(1)修改hadoop-env.sh

增加如下配置:

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

export HADOOP_PREFIX=/usr/local/hadoop

(2)修改core-site.xml

<configuration>

<property>

<name>hadoop.tmp.dir</name>

<value>/home/hduser/temp</value>

<description>A base for other temporary directories.</description>

</property>

<property>

  <name>fs.defaultFS</name>

<value>hdfs://master:9000</value>

</property>

</configuration>

这里我们指定了一个临时文件夹的路径,这个路径必须存在,而且有权限访问,所以我们在hduser下创建一个temp目录。

(3)hdfs-site.xml

设置HDFS复制的数量

<configuration>

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

</configuration>

(4)mapred-site.xml

这里可以设置MapReduce的框架是YARN:

<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

</configuration>

(5)配置YARN环境变量,打开yarn-env.sh

里面有很多行,找到JAVA_HOME,设置:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

(6)配置yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
    <property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<property>

<name>yarn.resourcemanager.hostname</name>

<value>master</value>

</property>

</configuration>

(7)最后打开slaves文件,设置有哪些slave节点。

由于我们设置了3份备份,把master即是Name Node又是Data Node,所以我们需要设置三行:

master

slave01

slave02

3.3配置slave01和slave02

在slave01和slave02上做前面3.1 3.2相同的设置。

一模一样的配置,这里不再累述。

4.启动Hadoop

回到Master节点,我们需要先运行

hdfs namenode –format

格式化NameNode。

然后执行

start-all.sh

这里Master会启动自己的服务,同时也会启动slave01和slave02上的对应服务。

启动完毕后我们在master上运行jps看看有哪些进程,这是我运行的结果:

2194 SecondaryNameNode

2021 DataNode

1879 NameNode

3656 Jps

2396 ResourceManager

2541 NodeManager

切换到slave01,运行jps,可以看到如下结果:

1897 NodeManager

2444 Jps

1790 DataNode

切换到slave02也是一样的有这些服务。

那么说明我们的服务网都已经启动成功了。

现在我们在浏览器中访问:

http://192.168.100.40:50070/

应该可以看到Hadoop服务已经启动,切换到Datanodes可以看到我们启动的3台数据节点:

在Ubuntu上搭建Hadoop群集的更多相关文章

  1. Ubuntu上搭建Hadoop环境(单机模式+伪分布模式)

    首先要了解一下Hadoop的运行模式: 单机模式(standalone)        单机模式是Hadoop的默认模式.当首次解压Hadoop的源码包时,Hadoop无法了解硬件安装环境,便保守地选 ...

  2. Ubuntu上搭建Hadoop环境(单机模式+伪分布模式) (转载)

    Hadoop在处理海量数据分析方面具有独天优势.今天花了在自己的Linux上搭建了伪分布模式,期间经历很多曲折,现在将经验总结如下. 首先,了解Hadoop的三种安装模式: 1. 单机模式. 单机模式 ...

  3. Ubuntu上搭建Hadoop环境(单机模式+伪分布模式)【转】

    [转自:]http://blog.csdn.net/hitwengqi/article/details/8008203 最近一直在自学Hadoop,今天花点时间搭建一个开发环境,并整理成文. 首先要了 ...

  4. 在 Ubuntu 上搭建 Hadoop 分布式集群 Eclipse 开发环境

    一直在忙Android FrameWork,终于闲了一点,利用空余时间研究了一下Hadoop,并且在自己和同事的电脑上搭建了分布式集群,现在更新一下blog,分享自己的成果. 一 .环境 1.操作系统 ...

  5. Ubuntu上搭建Watir-Webdriver与Cucumber环境

    本文主要演示如何在Ubuntu上搭建Watir-Webdriver与Cucumber环境,用于自动化测试. 1. Ubuntu环境 A. 安装 因为我的工作机是Windows,所以采用虚拟机的方式使用 ...

  6. Ubuntu上搭建Git服务器

    下面我们就看看,如何在Ubuntu上搭建Git服务器.我们使用VMware虚拟机安装两台Ubantu系统,分别命名为gitServer和gitClient_01. 1.安装OpenSSH并配置SSH无 ...

  7. 在ubuntu上搭建交叉编译环境---arm-none-eabi-gcc

    最近要开始搞新项目,基于arm的高通方案的项目. 那么,如何在ubuntu上搭建这个编译环境呢? 1.找到相关的安装包:http://download.csdn.net/download/storea ...

  8. 在Ubuntu上搭建kindle gtk开发环境

    某个角度上说,kindle很类似android,同样的Linux内核,同样的Java用户层.不过kindle更注重简单.节能.稳定.Amazon一向认为,功能过多会分散人们阅读时候的注意力. Kind ...

  9. Ubuntu上搭建GPU服务器

    1.安装显卡驱动 2.安装CUDA 3.安装cuDNN 下载: 根据显卡类型以及操作系统,选定CUDA版本和语言设置,下载对应的显卡驱动. 驱动下载地址 安装 $ sudo ./NVIDIA-Linu ...

随机推荐

  1. ABP(现代ASP.NET样板开发框架)系列之6、ABP依赖注入

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之6.ABP依赖注入 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

  2. 存储程序(1)——MYSQL

    MySQL支持把几种对象存放在服务器端供以后使用.这几种对象有一些可以根据情况通过程序代码调用,有一些会在数据表被修改时自动执行,还有一些可以在预定时刻自动执行.它们包括以下几种: 1.存储函数(st ...

  3. Android开发之Activity的生命周期以及加载模式

    本篇博客就来好好的搞一下Activity的生命周期,如果搞过iOS的小伙伴的话,Activity的生命周期和iOS中ViewController的生命周期非常类似.生命周期,并不难理解.一个人的生命周 ...

  4. 计算机程序的思维逻辑 (43) - 剖析TreeMap

    40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在TreeMap中,键值对之间按键有序,Tree ...

  5. Java 二叉树遍历右视图-LeetCode199

    题目如下: 题目给出的例子不太好,容易让人误解成不断顺着右节点访问就好了,但是题目意思并不是这样. 换成通俗的意思:按层遍历二叉树,输出每层的最右端结点. 这就明白时一道二叉树层序遍历的问题,用一个队 ...

  6. Troubleshooting:重新安装Vertica建库后无法启动

    环境:RHEL6.5 + Vertica7.1.0-3 1.故障现象 2.重装集群 3.再次定位 4.解决问题 5.总结 1.故障现象 故障现象:Vertica集群安装成功,但是创建数据库后一直无法u ...

  7. 读书笔记--SQL必知必会13--创建高级联结

    13.1 使用表别名 SQL可以对列名.计算字段和表名起别名. 缩短SQL语句 允许在一条SELECT语句中多次使用相同的表. 注意:表别名只在查询执行中使用,不返回到客户端. MariaDB [sq ...

  8. 现代3D图形编程学习-基础简介(1) (译)

    本书系列 现代3D图形编程学习 基础简介 并不像本书的其他章节,这章内容没有相关的源代码或是项目.本章,我们将讨论向量,图形渲染理论,以及OpenGL. 向量 在阅读这本书的时候,你需要熟悉代数和几何 ...

  9. SQL Server 并行操作优化,避免并行操作被抑制而影响SQL的执行效率

    为什么我也要说SQL Server的并行: 这几天园子里写关于SQL Server并行的文章很多,不管怎么样,都让人对并行操作有了更深刻的认识. 我想说的是:尽管并行操作可能(并不是一定)存在这样或者 ...

  10. HTTPS那些事(一)HTTPS原理

    转载来自:http://www.guokr.com/post/114121/ 谣言粉碎机前些日子发布的<用公共WiFi上网会危害银行账户安全吗?>,文中介绍了在使用HTTPS进行网络加密传 ...