CentOS集群部署hadoop-2.5.2

现在在学习hadoop,熬了一两天,看了很多的博客,学到了很多的知识,是前人的无私奉献,让我在hadoop的安装部署上少走了不少弯路,特此感谢。如果你想尝试伪分布式的部署hadoop,可以参考以下面这篇博客:
http://www.cnblogs.com/myresearch/p/hadoop-Standalone-Pseudo-Distributed-operation.html
个人觉的写的很好,笔者也是参考的他们首先在单机上部署成功了伪分布式的hadoop,至于本篇文章,是我总结他人技术博客,加上自己在安装部署过程中遇到的问题,汇总而来,大神可以无视。
下面让我们一起在集群中来部署hadoop。

一 搭建环境

在MACOS上使用VMware Fusion 模拟的集群环境,本质上来说,两台机器和两台以上的机器的部署大同小异,只不过机器多了罢了,没特别大的区别。

OS: CentOS6.8 64位
hadoop version: 2.5.2

二 配置网络

虚拟机选择桥接模式,在编辑->网络设置进入后,选择自己的网卡,而不要选择默认的自动。然后在centOS上,配置IP信息。
主机名
vim /etc/sysconfig/network
 #进入之后,HOSTNAME=xxx,xxx修改为自己的主机名,可以默认。
网卡配置
vim vim /etc/sysconfig/network-scripts/ifcfg-eth0
 #这里进行ip等信息的配置

network文件中的配置如下:

  TYPE=Ethernet
  ONBOOT=yes          #是否启动时运行
  NM_CONTROLLED=yes
  BOOTPROTO=static       #使用静态IP,而不是由DHCP分配IP
  DEFROUTE=yes
  IPV4_FAILURE_FATAL=yes
  IPV6INIT=no
  PEERDNS=yes
  PEERROUTES=yes
  IPADDR=192.168.1.4    #指定本机IP地址
  NETMASK=255.255.255.0    #指定子网掩码
  GATEWAY=192.168.1.1     #指定网关
DNS
#DNS的配置
vim /etc/resolv.conf

配置如下:

nameserver 8.8.8.8 #GOOGLE的DNS服务器
nameserver 61.144.56.100 #指定当前城市最近的DNS服务
nameserver 192.168.1.1  #指定经路由器上指定的DNS服务器

三 配置所有服务器SSH无密码登录

假若你的集群环境中有上百台机器,每次启动的时候,输入几百次的密码,我想是人都会疯掉,然后关于集群部署,个人觉得很多东西都是一台机器配置,其他机器直接copy就可以了,第一步配置ssh 无密码登录,对以后的工作会方便很多。

1. 下载安装 ssh 服务

一般而言,centos 在安装的时候,默认安装了ssh的,我们也可以检测一下,使用如下命令:
rpm -qa | ssh

如果有输出,说明已经安装好了,要是还是不放心,那你就yum install ssh* 一下吧。

2. 配置无密码登录

如果此时你使用 
$ ssh localhost

是需要密码才能登录的,那么通过下面的配置,就可以实现无密码登录了。
首先在/root 目录下建立 .ssh 文件夹(.ssh 文件夹是隐藏的,使用ls -a 命令可以看到文件夹是否已经存在,存在不需要再自己建)。

$ mkdir /root/.ssh
$ cd ~/.ssh/         
$ ssh-keygen -t rsa             
$ cat id_rsa.pub >> authorized_keys

再次使用

ssh localhost

就可以无密码登录到本机了,下面将秘钥文件写到其他机器的authorized_keys文件中,使用下面命令可以简单实现

 ssh-copy-id root@node1

这样安装提示操作以后呢,基本上就可以了。

四 安装Java环境

首先去下载匹配的jdk,笔者下载的是jdk1.8的rpm包,这个没什么好说的,下载好了以后使用下面命令进行安装:

rpm -ivh jdk-xxxx.rpm

然后配置jdk的环境,配置方法如下(这里网上很多,都可以参考,会的略过吧)

vim /root/.bashrc
然后在最后面加上如下:

其中JAVA_HOME=XXX 后面是你的jdk安装目录。
在终端敲java -version 出现内容基本就是安装好了。

五 克隆配置好的系统

做完了以上几步后,现在可以克隆我们已经配置好的虚拟机了,因为很多都是重读的,这里有一个坑要注意一下,刚才配置网络的时候,如果直接克隆虚拟机,网卡配置那里的IP和MAC地址不会变,需要自己改过来,IP改成同一网段下不一样的就好了。
# 修改ip地址
vim /etc/sysconfig/network-scripts/ifcfg-eth0

六 安装hadoop

这里需要注意一下,hadoop官网下载的编译好的文件是基于32位平台编译的,如果你的Linux版本是64位的,这里需要下载源码进行编译,否则在启动hadoop的时候会报平台错误。

6.1编译hadoop

编译hadoop的过程网上很多,而且不是很复杂,这里不多写,如果有人觉得麻烦,不想搞,我这里提供hadoop2.5.2编译好的包下载,下载链接:

http://pan.baidu.com/s/1dEPLAO5

6.2配置hadoop

hadoop不需要再install安装,只需要将其配置文件配置好了,然后用几个脚本就可以启动hadoop了,下面介绍下2.5.2的配置过程。配置文件在/hadoop/etc/hadoop/ 下
6.2.1. hadoop-env.sh
 打开上述文件后,修改jdk的目录即可,如下:
export JAVA_HOME=/usr/java/jdk1.7.0_79
6.2.2. core-site.xml
<configuration>
  <property>
    <name>fs.default.namename>
    <value>hdfs://node1:9000value>
    <final>truefinal>
  property>

    <property>
        <name>hadoop.tmp.dirname>
        <value>/opt/hadoop/tmpvalue>
    property>

    <property>
        <name>ds.default.namename>
        <value>hdfs://node1:54310value>
        <final>truefinal>
    property>

<property>
  <name>fs.checkpoint.periodname>
  <value>3600value>
  <description>The number of seconds between two periodic checkpoints.
  description>
property>
<property>
  <name>fs.checkpoint.sizename>
  <value>67108864value>
property>
configuration>
6.2.3. hdfs-site.xml

<configuration>
  <property>
    <name>dfs.namenode.name.dirname>
    <value>file:/opt/hadoop/dfs/namevalue>
    <final>truefinal>
  property>

  <property>
    <name>dfs.datanode.data.dirname>
    <value>file:/opt/hadoop/dfs/datavalue>
    <final>truefinal>
  property>

  <property>
    <name>dfs.replicationname>
    <value>3value>
  property>

<property>
    <name>dfs.http.addressname>
    <value>node1:50070value>
<description>
    The address and the base port where the dfs namenode web ui will listen on.
    If the port is 0 then the server will start on a free port.
description>
property>

<property>
  <name>dfs.namenode.secondary.http-addressname>
  <value>node2:50090value>
property>
configuration>
6.2.4. mapred-site.xml
这个文件是不存在的,可以利用mapred-site.xml.template复制一份,步骤如下:
cp mapred-site.xml.template  mapred-site.xml

然后编辑mapred-site.xml,内容如下:

<configuration>
   <property>
       <name>mapreduce.framework.namename>
        <value>yarnvalue>
   property>
   <property>
       <name>mapreduce.jobhistory.addressname>
        <value>node1:10020value>
   property>
   <property>
       <name>mapreduce.jobhistory.webapp.addressname>
        <value>node1:19888value>
   property>
configuration>

6.3启动hadoop

根据上面的配置,我们在hadoop的目录下创建几个目录
cd /hadoop/
mkdir tmp
mkdir -p /data/name
6.3.1. 格式化hdfs
cd /hadoop/bin/
./hdfs namenode -format
6.3.2. 启动
cd /hadoop/sbin/
./start-dfs.sh 
./start-yarn.sh

我为了偷懒,直接运行的是:

./start-all.sh

启动截图如下:
CentOS集群部署hadoop-2.5.2_第1张图片
如果没有警告或者错误,说明已经成功了,我们可以使用jps命令查看,直接在终端键入jps然后回车看系统运行的hadoop进程:
1. NameNode 节点
CentOS集群部署hadoop-2.5.2_第2张图片
2. SecondNameNode节点
CentOS集群部署hadoop-2.5.2_第3张图片
3. 其他节点DataNode
CentOS集群部署hadoop-2.5.2_第4张图片

七 小结

配置过程参考过很多文件,总共搭建学习过两次,配置环境过程可以学到很多东西,感谢前辈的分享。上面的搭建过程可能不经详细,如有问题,欢迎大家指出。
下面就是开始学习如何写MapRduce程序了。

你可能感兴趣的:(hadoop,hadoop,centos,集群,分布式)