前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hadoop之--集群环境搭建

Hadoop之--集群环境搭建

作者头像
GavinZhou
发布2018-01-02 15:45:37
9230
发布2018-01-02 15:45:37
举报

上篇博客介绍了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地址,如下操作:

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

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

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

代码语言:javascript
复制
[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键进行补全##########

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

代码语言:javascript
复制
[root@node1]#mount /dev/cdrom /mnt
[root@node1]#sh ./VBoxLinuxAdditions.run --noexec --nox11

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

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

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

代码语言:javascript
复制
[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)建立专属的组

代码语言:javascript
复制
[root@localhost]#groupadd hadoop

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

(2)修改hosts文件

代码语言:javascript
复制
[root@node1]#vi /etc/hosts

我的设置是这样的:

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下,将其所有者改为:

代码语言:javascript
复制
[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
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地址,其它的以此类推

代码语言:javascript
复制
[root@node1]#ifconfig eth0 192.168.137.90

(2)产生公钥和私钥

代码语言:javascript
复制
$ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa   ###产生公钥和私钥在,~/.ssh下

对四个主机分别执行即可

代码语言:javascript
复制
$ 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,大家自行修改

代码语言:javascript
复制
$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)格式化文件系统

代码语言:javascript
复制
$cd ~/hadoop-1.2.1/bin
$./hadoop namenode -format

(3)关闭防火墙

代码语言:javascript
复制
$service iptables stop

(4)启动hadoop集群

代码语言:javascript
复制
$cd ~/hadoop-1.2.1/bin
$./start-dfs.sh    ##仅启动HDFS,暂时不启动MapReduce

结果大概是这样:

集群启动
集群启动

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-03-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前期准备
  • 配置Hadoop
  • 免密码登录
  • 启动hadoop集群
相关产品与服务
轻量应用服务器
轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门开源软件打包实现一键构建应用,提供极简上云体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档