hadoop安装详解,Hadoop跨域集群构建实验

作者: 计算机网络技术  发布:2019-11-04

分布式运算总是离不开大集群,大量数据分析和存储构建跨域的异地集群也是非常正常的,所以今天在ec2上尝试了一下跨域的整体Hadoop集群配置。

1.hadoop简介

性感阅读:Apache Hadoop初体验 http://www.linuxidc.com/Linux/2012-02/53100.htm 

 

    使用5台机器分别位于两个不同的域:

Hadoop是Apache软件基金会旗下的一个开源分布式计算平台。以Hadoop分布式文件系统(HDFS,Hadoop Distributed Filesystem)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。

     域A:namenode.areaA                  域B:datanode03.areaB

对于Hadoop的集群来讲,可以分成两大类角色:Master和Salve。一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的DataNode管理存储的数据。MapReduce框架是由一个单独运行在主节点上的JobTracker和运行在每个集群从节点的TaskTracker共同组成的。主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。当一个Job被提交时,JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。

              datanode01.areaA                          datanode04.areaB

从上面的介绍可以看出,HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心。HDFS在集群上实现分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。HDFS在MapReduce任务处理过程中提供了文件操作和存储等支持,MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了Hadoop分布式集群的主要任务。

              datanode02.areaA

1.2.环境说明

     

192.168.253.139 master.hadoop

      域A和域B可以是随意的两个域,但是要求有上级DNS服务可以使两个域网络互通,接下来讲各个节点的配置:

192.168.253.140 slave.hadoop

     namenode.areaA 作为namenode 和 jobtracker,

两个节点均是centos系统,并且有一个相同的用户hadoop,master机器主要配置namenode和jobtracker的角色,负责总管分布式数据和分解任务的执行,1个slave机器配置datanode和tasktracker的角色,负责分布式数据存储以及任务的执行。还应该有对master做高可用。

     core-site.xml中使用完整地址配置即 hdfs://namenode.areaA:9000,因为jobtracker会使用该配置来让tasktracker连接HDFS文件系统,如果只配置机器名会导致不同域的tasktracker无法连接到HDFS文件系统而无法正常工作;

1.3 网络配置

     mapred-site.xml中可以配置机器名或者完整地址 namenode:9001 或者 namenode.areaA:9001 都可以,namenode中的该配置文件只用于ssh到目标机器启动jobtracker进程,但是如果jobtracker使用独立的服务器而且在不同域的话,该配置文件需要配置完整的可通讯的地址;

可以配置其master主机名名字为master.hadoop,ip为192.168.253.139

    masters 该文件是配置备份namenode的,一般情况下配置本机就行了,localhost  namenode namenode.areaA 都不会有问题,但是同样的,如果是位于不同的第二namenode主节点,那么就需要配置完整的可通讯的地址;

配置slave服务器的名字为slave.hadoop,ip为192.168.253.140.(为防止两个服务器连接问题,暂时关闭防火墙 service iptables stop)

    slaves 该文件是配置所有的datanodes的,根据预设的环境,我们可以配置成:

1.4下载所需要的软件(见附件)

    datanode01

2.ssh无密码验证设置

    datanode02

hadoop运行过程中需要管理远端hadoop守护程序,在hadoop启动以后,namenode是通过ssh来启动和停止各个datanode的各种守护进程,这就必须在节点之间执行指令的时候是不需要输入密码的形式,故我们需要配置SSH运用无密码公钥认证的形式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上也能使用SSH无密码登录到NameNode。

    datanode03.areaB

2.1 安装和启动ssh协议,实现两个服务器的双机互信

    datanode04.areaB

1
2
3
4
5
6
    192.168.253.139
[root@master ~]# ssh-keygen -t rsa -f  ~/.ssh/id_rsa -P ''
[root@master ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.253.140
    192.168.253.140
[root@slave ~]# ssh-keygen -t rsa -f  ~/.ssh/id_rsa -P ''
[root@slave ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.253.139

    在相同域中的可以只配置机器名,不同域中的就需要配置完整的地址,不过全部配置完整的地址当然也是不会错的,不过配置机器名可以避免上级DNS故障所造成的整体瘫痪。而且我在实验过程中明显感觉到使用公网域名比使用机器名通讯速度要慢很多,这个可能和网络环境也有关系;

 

    namenode的配置这样就可以了。

在192.168.253.139主机上测试,可以实现无密码登录192.168.253.140,同样的方法测试slave服务器图片 1

图片 2

3.java环境安装

所有的机器都要安装JDK,现在现在master服务器上安装,然后其他服务器按照步骤重复进行即可,安装jdk配置环境变量,需要以root身份进行, 

3.1安装JDK

使JDK获得可执行权限,并进行如下步骤,进行安装(下载JDK文件到/usr/src)

1
2
3
[root@master  ~]# cd /usr/src
[root@master  ~]# chmod +x jdk-6u31-linux-x64-rpm.bin
[root@master  ~]# ./jdk-6u31-linux-x64-rpm.bin

3.2添加java环境变量

在"/etc/profile"加入如下行

1
2
3
export JAVA_HOME=/usr/java/jdk1.6.0_31
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

使定义生效

source /etc/profile

3.3 验证安装成功

配置完毕并且生效后,通过下面命令判断是否成功

图片 3

3.4 使用此种方法安装剩余的slave机器,

4.hadoop集群安装

所有的机器都要安装hadoop,先从master服务器安装,

4.1 安装hadoop

1
2
3
4
5
6
7
8
[root@master ~]# useradd hadoop
[root@master ~]# passwd hadoop
    hadoop
[root@master ~]# cd /usr/src/
[root@master src]# tar xf hadoop-1.0.0.tar.gz
[root@master src]# mv hadoop-1.0.0  hadoop
[root@master src]#mv hadoop  /usr/
[root@master usr]# chown -R hadoop:hadoop hadoop

建立hadoop环境变量

vim /etc/profile

1
2
export HADOOP_HOME=/usr/hadoop
export PATH=$PATH:$HADOOP_HOME/bin

使环境变量生效

source /etc/profile

4.2配置hadoop

hadoop配置文件位于/usr/hadoop/conf

1.配置hadoop-env.sh文件,在末尾添加如下两行

1
2
# set java environment
export JAVA_HOME=/usr/java/jdk1.6.0_31

Hadoop配置文件在conf目录下,之前的版本的配置文件主要是Hadoop-default.xml和Hadoop-site.xml。由于Hadoop发展迅速,代码量急剧增加,代码开发分为了core,hdfs和map/reduce三部分,配置文件也被分成了三个core-site.xml、hdfs-site.xml、mapred-site.xml。core-site.xml和hdfs-site.xml是站在HDFS角度上配置文件;core-site.xml和mapred-site.xml是站在MapReduce角度上配置文件。

配置core-site.xml文件,这里配置的是HDFS的地址和端口号

图片 4

如没有配置hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被干掉,必须重新执行format才行,否则会出错。

配置hdfs-site.xml文件,HDFS的配置,配置的备份方式默认为3

图片 5

replication是数据副本数量,默认为3,slave少于三台会报错,此例是1

配置mapred-site.xml文件,配置的JobTracker的地址和端口

图片 6

配置master文件

去掉localhost,加入192.168.253.139(master服务器)的ip地址

配置slave文件

去掉localhost,加入192.168.253.140(slave服务器)的ip地址

4.3启动及验证

格式化HDFS文件系统

在格式化文件系统时,使用普通用户进行操作

hadoop namenode -format

使用下面命令启动

/usr/hadoop/bin/start-all.sh

可以通过以下启动日志看出,首先启动namenode 接着启动datanode1,datanode2,…,然后启动secondarynamenode。再启动jobtracker,然后启动tasktracker1,tasktracker2,…。

启动 hadoop成功后,在 Master 中的 tmp 文件夹中生成了 dfs 文件夹,在Slave 中的 tmp 文件夹中均生成了 dfs 文件夹和 mapred 文件夹。

图片 7图片 8

参考文章:

本文由今晚买四不像发布于计算机网络技术,转载请注明出处:hadoop安装详解,Hadoop跨域集群构建实验

关键词:

上一篇:分布式搜索运行框架
下一篇:没有了