您的位置:首页 > 运维架构 > Linux

CentOS集群部署hadoop-2.5.2

2016-10-03 21:21 183 查看
现在在学习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.name</name>
<value>hdfs://node1:9000</value>
<final>true</final>
</property>

<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value>
</property>

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

<property>
<name>fs.checkpoint.period</name>
<value>3600</value>
<description>The number of seconds between two periodic checkpoints.
</description>
</property>
<property>
<name>fs.checkpoint.size</name>
<value>67108864</value>
</property>
</configuration>


6.2.3. hdfs-site.xml

<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/hadoop/dfs/name</value>
<final>true</final>
</property>

<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/hadoop/dfs/data</value>
<final>true</final>
</property>

<property>
<name>dfs.replication</name>
<value>3</value>
</property>

<property>
<name>dfs.http.address</name>
<value>node1:50070</value>
<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-address</name>
<value>node2:50090</value>
</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.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>node1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node1:19888</value>
</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


启动截图如下:



如果没有警告或者错误,说明已经成功了,我们可以使用jps命令查看,直接在终端键入jps然后回车看系统运行的hadoop进程:

1. NameNode 节点



2. SecondNameNode节点



3. 其他节点DataNode



七 小结

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

下面就是开始学习如何写MapRduce程序了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息