Hadoop之--集群环境搭建

上篇博客介绍了HDFS的相关框架与理念,这篇博客介绍如何搭建Hadoop集群

前期准备

我因为没有实体的多台主机,只有自己一台主机,所以决定借助VirtualBox虚拟机来搭建集群环境,我们的搭建的框架是这样的:

node1:NameNode node2:DataNode node3:DataNode node4:Secondary NameNode

(1)虚拟机搭建

我使用的OS是32位centos6.5(2.6内核),实际搭建了4个虚拟主机,参见下图红圈标识的node1-4:

至于如何创建虚拟机,请大家自行百度,下面默认大家已经装好。

(2)JDK的安装

由于hadoop是运行在java环境之上,所以我们需要为每个主机配置java环境,大家可以参照这篇博客来配置java环境

我个人在实际的过程中出现了很多问题,这里一并写出,省却大家再去找教程之苦

<1>安装的虚拟机无法上网

首先,虚拟机的Net设置需要制定为Bridge(桥接)模式,这意味这其会使用你的物理网卡;其次,需要指明eth0(物理网卡)使用dhcp协议获取ip地址,如下操作:

[root@node1]#dhclient eth0    ## 指明使用dhcp方式获取ip地址
[root@node1]#vi /etc/sysconfig/network-scripts/ifcfg-eth0
##################将其中的ONBOOT="yes"##################### 
##################表示开机自动按照dhcp方式获取################

<2>如何实现虚拟机与实体主机的文件共享

可以通过安装共享文件夹(shared folder)来实现文件的互传,但是virtualBox需要安装增强功能才能使用共享文件夹,按照下面的方式可以实现:

[root@node1]#yum install -y gcc gcc-devel gcc-c++ gcc-c++-devel make kernel-devel
[root@node1]#ln -s /usr/src/kernels/2.6.32* /usr/src/linux
###################其中的2.6.32****是你的内核版本号,这里可以使用Tab键进行补全##########

点击【设备】–>【安装增强功能】,接下来:

[root@node1]#mount /dev/cdrom /mnt
[root@node1]#sh ./VBoxLinuxAdditions.run --noexec --nox11

之后就可以设置共享文件夹了,选择自动挂载,之后重启,会在/media/下看到sf_name(name是你设置的共享文件夹的名字)这个文件夹,就可以实现主机和虚拟主机之间的文件共享

<3>如何不使用共享文件夹来进行文件间的传输

我们通过一个命令就可以实现,scp,但是scp是通过ssh服务来进行文件的传输的,所以使用前需要安装ssh

[root@node1]#yum install openssh-clients
[root@node1]#scp hadoop-1.2.1.tar.gz root@192.168.137.90:/home   ##不同主机上拷贝文件

实际到这里,已经可以去安装JDK了,参考这篇博客将JDK安装好

配置Hadoop

(1)建立专属的组

[root@localhost]#groupadd hadoop

 # 新建gavinzhou用户,属于hadoop用户组,附加组是root
[root@node1]#useradd –d /home/gavinzhou –m gavinzhou –g hadoop –G root 

(2)修改hosts文件

[root@node1]#vi /etc/hosts

我的设置是这样的:

即各个主机对应的IP地址是(只是规划哈,到此其实node2-node4都还没有配置):

node1:192.168.137.90 node2:192.168.137.91 node3:192.168.137.92 node4:192.168.137.93

(3)配置Hadoop

<1>修改/etc/profile文件

我使用的是1.2.1的版本,首先将其解压到/home/gavinzhou/hadoop下,将其所有者改为:

[root@node1]#tar xzvf hadoop-1.2.1.bin.tar.gz
[root@node1]#chown gavinzhou:hadoop hadoop-1.2.1
[root@node1]#vi /etc/profile   ##修改profile文件

<2>修改conf/core-site.xml

<3>修改conf/hdfs-site.xml

由于我们是node 2和node 3作为DataNode,所以修改副本数为2

<4>修改slaves

指明DataNode是哪些主机

<4>修改masters

指明Secondary NameNode是哪个主机,Secondary NameNode只要不和NameNode在同一台机器上即可,我们的配置是在node4上

到此,就可以进行虚拟机的复制了,复制三份,分别为node2,node3,node4

免密码登录

Hadoop集群的各个结点之间需要进行数据的访问,被访问的结点对于访问用户结点的可靠性必须进行验证,hadoop采用的是ssh的方法通过密钥验证及数据加解密的方式进行远程安全登录操作,如果hadoop对每个结点的访问均需要进行验证,其效率将会大大降低,所以才需要配置SSH免密码的方法直接远程连入被访问结点,这样将大大提高访问效率。 SH主要通过RSA算法来产生公钥与私钥,在数据传输过程中对数据进行加密来保障数据的安全性和可靠性,公钥部分是公共部分,网络上任一结点均可以访问,私钥主要用于对数据进行加密,以防他人盗取数据。

(1)设置node1-node4的ip地址

下面示例修改node1的ip地址,其它的以此类推

[root@node1]#ifconfig eth0 192.168.137.90

(2)产生公钥和私钥

$ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa   ###产生公钥和私钥在,~/.ssh下

对四个主机分别执行即可

$ cd ~/.ssh
$ cp id_rsa.pub authorized_keys     ###authorized_keys名字不可更改 
$ scp authorized_keys node2:/home/gavinzhou/.ssh   ###将node1公钥拷贝到node2
$ scp authorized_keys node3:/home/gavinzhou/.ssh   ###将node1公钥拷贝到node3
$ scp authorized_keys node4:/home/gavinzhou/.ssh   ###将node1公钥拷贝到node4

至此,已经可以免密码登陆node2,node3,node4了

启动hadoop集群

(1)拷贝所有hadoop配置文件到各个主机上

首先需要设置conf/hadoop-env.sh下的JAVA_HOME,大家自行修改

$cd ~/hadoop-1.2.1/conf
$scp ./* node2:/home/gavinzhou/hadoop-1.2.1/conf   ##配置文件拷贝到node2
$scp ./* node3:/home/gavinzhou/hadoop-1.2.1/conf   ##配置文件拷贝到node3
$scp ./* node4:/home/gavinzhou/hadoop-1.2.1/conf   ##配置文件拷贝到node4

(2)格式化文件系统

$cd ~/hadoop-1.2.1/bin
$./hadoop namenode -format

(3)关闭防火墙

$service iptables stop

(4)启动hadoop集群

$cd ~/hadoop-1.2.1/bin
$./start-dfs.sh    ##仅启动HDFS,暂时不启动MapReduce

结果大概是这样:

说的是启动了node2和node3作为DataNode,启动node4作为Secondary NameNode

Ref: [1]参考博客1 [2]参考博客2

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏应兆康的专栏

【腾讯云的1001种玩法】在腾讯云上部署你的Hadoop集群

Apache Hadoop软件库是一个框架,开发者只需使用简单的编程模型在大量计算机(配置不高)上对大型数据集进行分布式处理。本文主要跟大家讲述如何在腾讯云上部...

6803
来自专栏猿人谷

hadoop 1.x环境搭建

近一直在自学Hadoop,今天花点时间搭建一个开发环境,并整理成文。 首先要了解一下Hadoop的运行模式: 单机模式(standalone)       ...

19610
来自专栏云计算教程系列

如何在Ubuntu 16.04上安装和配置Zabbix以安全地监视远程服务器

Zabbix是用于web和应用程序的开源监控软件。它提供对从服务器,虚拟机和任何其他类型的网络设备收集的数千个指标的实时监控。这些指标可帮助确定IT基础架构的当...

1073
来自专栏云计算教程系列

如何在CentOS 7上安装和配置Zabbix以安全地监视远程服务器

Zabbix是用于网络和应用程序的开源监控软件。它提供对从服务器,虚拟机和任何其他类型的网络设备收集的数千个指标的实时监控。这些指标可帮助您确定IT基础架构当前...

250
来自专栏星汉技术

Hadoop问题:DataNode线程不见了

1756
来自专栏北京马哥教育

Corosync + Pacemaker 搭建高可用MariaDB服务

实验描述 本实验的目的是为了通过手动配置corosync配置文件,实现MariaDB服务的高可用,集群心跳传递使用组播方式。 三个节点的主机名分别为:node5...

33010
来自专栏行者悟空

Apache Hadoop-2.x集群部署(持续更新完善)

592
来自专栏程序小工

【Docker】--安装与配置

docker 是 linux 虚拟化技术,能够一键式搭建开发环境,并且能保证运维、开发、上线部署的环境完全一致,避免了运行环境差异性带来的问题。 具有简单、轻...

873
来自专栏云计算教程系列

如何在Ubuntu 16.04上使用OpenVPN和Docker安全地运行MongoDB服务器

MongoDB是一个开源的NoSQL数据库。由于传统的MongoDB设置缺少一些您想要的安全功能,可能会担心数据的安全性。

1020
来自专栏Jed的技术阶梯

Spark HA集群搭建

比如分别把这两个文件重命名为start-spark-all.sh和stop-spark-all.sh 原因: 如果集群中也配置HADOOP_HOME,那么在...

953

扫码关注云+社区