Hadoop之--集群环境搭建

来源:互联网 发布:淘宝店铺最怕什么 编辑:程序博客网 时间:2024/05/16 15:01

上篇博客介绍了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

我的设置是这样的:

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文件

hadoop

<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 0
原创粉丝点击