Ubuntu_10.04下Hadoop-0.20.2集群配置手册

一、软硬件环境的准备

下面的文章来自hadoopor.com,我先交待一下我自己的环境: 两台机器,每台机器上面两个虚机(vmware 均以桥接方式,也就是说4个虚机都有各自独立的内网IP)都是ubuntu10.04,宿主机都是windowsxp,用SecureCRT(严重推荐,好使)连接各个副机。最后按下文配置,成功运行~另:机器之间的文件用SCP命令吧,好使~~~

////////////////////////////////////////////////////////////////////////////////

集群包含三个节点:1个namenode,3个datanode,节点之间局域网连接,可以相互ping通。操作系统ubuntu 10.04节点IP地址分布如下:

hadoop-namenode:

hadoop-datanode1:

hadoop-datanode2:

hadoop-datanode3:

修改/etc/hosts文件如下:

192.168.7.132  hadoop-namenode

192.168.8.2    hadoop-datanode1

192.168.7.123  hadoop-datanode2

192.168.7.179  hadoop-datanode3

把namenode上面的hosts文件覆盖所有datanode上面的hosts,是他们内容一致。

安装JDK环境:

下载JDK安装包jdk-6u20-linux-i586.bin,进行安装,然后把安装目录移到/usr/lib/ jdk1.6.0_20,

然后ln –s /usr/lib/jdk1.6.0_20/bin/java /usr/bin/java

在/etc/profile下面设置JDK_HOME变量

export JDK_HOME=/usr/lib/jdk1.6.0_20

JDK环境的操作需要在所有的namenode和datanode上面进行操作。

SSH无密码验证配置

Hadoop需要使用SSH协议,namenode将使用SSH协议启动namenode和datanode进程,(datanode向namenode传递心跳信息可能也是使用SSH协议,这是我认为的,还没有做深入了解)。许多教程上介绍Hadoop集群配置时只说明了namenode上SSH无密码登录所有datanode,我在配置时发现必须使datanode上也能SSH无密码登录到namenode,Hadoop集群才能正常启动(也许这不是必须的,只是我的一个失误,但是这样能够正常启动Hadoop集群)。

*配置Namenode无密码登录所有Datanode

(0)原理

Namenode作为客户端,要实现无密码公钥认证,连接到服务端datanode上时,需要在namenode上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到datanode上。当namenode通过ssh连接datanode时,datanode就会生成一个随机数并用namenode的公钥对随机数进行加密,并发送给namenode。namenode收到加密数之后再用私钥进行解密,并将解密数回传给datanode,datanode确认解密数无误之后就允许namenode进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端namenode公钥复制到datanode上。

(1)所有机器上生成密码对

所有节点上执行以下命令:

root@hadoop-namenode# ssh-keygen

然后一路回车就可以了。

这将在/root/.ssh/目录下生成一个私钥id_rsa和一个公钥id_rsa.pub。

把namenode节点上面的id_rsa.pub 复制到所有datanode节点/root/.ssh/位置。

(注意:原文没有细说,这是指把id_rsa.pub先拷贝成authorized_keys,再将authorized_keys复制到其它datanode上的)

root@hadoop-namenode# cp id_rsa.pub authorized_keys

namenode的公钥

root@hadoop-namenode# chmod 644 authorized_keys

使用SSH协议将namenode的公钥信息authorized_keys复制到所有DataNode的.ssh目录下(.ssh下最初没有authorized_keys,如果有,则需要复制追加,后面会讲到如何追加)。

root@hadoop-namenode# scp authorized_keys data节点ip地址:/root/.ssh

这样配置过后,namenode可以无密码登录所有datanode,可以通过命令

“ssh 节点ip地址”来验证。有些手册上介绍的配置方法与此不一致,但是这种方法是成功的。很多手册到此步SSH配置就完成了,但是我实验时发现不能正常启动hadoop,所以我还继续做了配置。

*配置每个Datanode无密码登录Namenode

(0)原理

Namenode连接datanode时namenode是客户端,需要将namenode上的公钥复制到datanode上,那么,如果datanode主动连接namenode,datanode是客户端,此时需要将datanode上的公钥信息追加到namenode中的authorized_keys之中。(此时,由于namenode中已经存在authorized_keys文件,所以这里是追加)。

如果进一步需要datanode之间实现公钥无密码验证,则同样需要相互之间追加公钥信息

(1)将各个datanode上的id_rsa.pub追加到namenode的authorized_keys

在所有datanode上依次执行如下命令:

root@hadoop-datanode1# scp id_rsa.pub namenode ip地址:/root/.ssh/datanode ip地址.id_rsa.pub

这将datanode上之前产生的公钥id_rsa.pub复制到namenode上的.ssh目录中,并重命名为datanode ip地址.id_rsa.pub,这是为了区分从各个datanode上传过来的公钥。

复制完毕,在namenode上执行以下命令,将每个datanode的公钥信息追加:

root@hadoop-namenode# cat datanode ip地址.id_rsa.pub >> authorized_keys

这样,namenode和datanode之间便可以相互ssh上并不需要密码......

注意:整个过程中只涉及到创建密钥,复制公钥,添加公钥内容,没有更改配置文件,实际上配置文件/etc/ssh/sshd_config中开启了公钥验证

{

RSAAuthentication yes

PubkeyAuthentication yes

}

(2)SSH配置完毕

至此,namenode能无密码验证登陆每个datanode。每个datanode也能无密码验证SSH登陆到namenode。

二、hadoop配置

1.安装

下载hadoop发行版,地址:http://apache.freelamp.com/hadoop/core/stable/

安装Hadoop集群通常要将安装软件解压到集群内的所有机器上。并且安装路径要一致,如果我们用HADOOP_HOME指代安装的根路径,通常,集群里的所有机器的HADOOP_HOME路径相同。

通常,集群里的一台机器被指定为NameNode,另一台不同的机器被指定为JobTracker。这些机器是masters。余下的机器即作为DataNode也作为TaskTracker。这些机器是slaves。

下载安装包后,直接解压安装即可:

$tar –zxvf hadoop-0.20.2.tar.gz

$cd hadoop-0.20.2

注:如果集群内机器的环境完全一样,可以在一台机器上把Hadoop0.20.2集群配置好,然后把配置好的软件即hadoop-0.20.2整个文件夹拷贝到其他机器的相同位置即可。

2.配置

编辑conf/hadoop-env.sh文件,至少需要将JAVA_HOME设置为Java安装根路径。

配置core-site.xml

<configuration>

<property>

<name>hadoop.tmp.dir</name>

<value>/opt/hadoop/tmp</value>

(注意,请先在hadoop目录下建立tmp文件夹)

<description>A base for other temporary directories.</description>

</property>

<!-- file system properties -->

<property>

<name>fs.default.name</name>

<value>hdfs://hadoop-namenode:9000</value>

</property>

</configuration>

dfs.name.dir是NameNode持久存储名字空间及事务日志的本地文件系统路径。当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。

dfs.data.dir是DataNode存放块数据的本地文件系统路径,逗号分割的列表。当这个值是逗号分割的目录列表时,数据将被存储在所有目录下,通常分布在不同设备上。

dfs.replication是数据需要备份的数量,默认是3,如果此数大于集群的机器数会出错。

注意:此处的name1、name2、data1、data2目录不能预先创建,hadoop格式化时会自动创建,如果预先创建反而会有问题。

(c)配置hdfs-site.xml

<configuration>
<property>
<name>dfs.name.dir</name>
<value>/opt/hadoop/hadoopfs/name1,/opt/hadoop/hadoopfs/name2</value> #hadoop的name目录路径 
<description>  </description>
</property>

<property>
<name>dfs.data.dir</name>
<value>/opt/hadoop/hadoopfs/data1,/opt/hadoop/hadoopfs/data2</value>
<description> </description>
</property>

<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

dfs.name.dir是NameNode持久存储名字空间及事务日志的本地文件系统路径。 当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。 
dfs.data.dir是DataNode存放块数据的本地文件系统路径,逗号分割的列表。 当这个值是逗号分割的目录列表时,数据将被存储在所有目录下,通常分布在不同设备上。

dfs.replication是数据需要备份的数量,默认是3,如果此数大于集群的机器数会出错。

(d)配置mapred-site.xml

<configuration>

<property>

<name>mapred.job.tracker</name>

<value> hadoop-namenode[j1]:9001</value>

</property>

</configuration>

配置conf/masters和conf/slaves来设置主从结点,注意最好使用主机名,并且保证机器之间通过主机名可以互相访问,每个主机名一行。

(e)配置masters文件,加入namenode的ip地址

hadoop-namenode

(f)配置slaves文件, 加入所有datanode的ip地址

hadoop-datanode1

hadoop-datanode2

hadoop-datanode3

将namenode上配置好的hadoop所在文件夹hadoop复制到所有datanode的 /opt目录下(实际上masters,slavers文件时不必要的,复制了也没问题)。

三、Hadoop集群启动

IP地址分布:

NameNode:210.77.9.204

DataNode1: 210.77.9.199

DataNode2: 210.77.9.216

Namenode执行:

格式化hadoop,

root@hadoop-namenode:/opt/hadoop/hadoop-0.20.2/bin# ./hadoop namenode –format

启动hadoop,

root@hadoop-namenode:/opt/hadoop/hadoop-0.20.2/bin#./start-all.sh

可以通过以下启动日志看出,首先启动namenode,然后启动datanode1,datanode2,datanode3,

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

在namenode上查看集群状态

root@hadoop-namenode:/opt/hadoop/hadoop-0.20.2/bin# ./hadoop dfsadmin -report

Configured Capacity: 22339694592 (20.81 GB)

Present Capacity: 10691964928 (9.96 GB)

DFS Remaining: 10691891200 (9.96 GB)

DFS Used: 73728 (72 KB)

DFS Used%: 0%

Under replicated blocks: 0

Blocks with corrupt replicas: 0

Missing blocks: 0

-------------------------------------------------

Datanodes available: 3 (3 total, 0 dead)

Name: 192.168.7.179:50010

Decommission Status : Normal

Configured Capacity: 7446564864 (6.94 GB)

DFS Used: 24576 (24 KB)

Non DFS Used: 3950833664 (3.68 GB)

DFS Remaining: 3495706624(3.26 GB)

DFS Used%: 0%

DFS Remaining%: 46.94%

Last contact: Thu Jul 15 14:03:33 CST 2010

Name: 192.168.8.2:50010

Decommission Status : Normal

Configured Capacity: 7446564864 (6.94 GB)

DFS Used: 24576 (24 KB)

Non DFS Used: 3746869248 (3.49 GB)

DFS Remaining: 3699671040(3.45 GB)

DFS Used%: 0%

DFS Remaining%: 49.68%

Last contact: Thu Jul 15 14:03:33 CST 2010

Name: 192.168.7.123:50010

Decommission Status : Normal

Configured Capacity: 7446564864 (6.94 GB)

DFS Used: 24576 (24 KB)

Non DFS Used: 3950026752 (3.68 GB)

DFS Remaining: 3496513536(3.26 GB)

DFS Used%: 0%

DFS Remaining%: 46.95%

Last contact: Thu Jul 15 14:03:33 CST 2010

web 方式查看:http:// namenode ip地址:50070 例如:http://192.168.7.132:50070

ERROR:

[root@localhost ~]# hadoop fs -ls #会出现如下情况
09/04/27 01:23:28 INFO ipc.Client: Retrying connect to server: /192.168.13.129:9000. Already tried 0 time(s).   这里为什么连接不上呢?
09/04/27 01:23:29 INFO ipc.Client: Retrying connect to server: /192.168.13.129:9000. Already tried 1 time(s).
09/04/27 01:23:30 INFO ipc.Client: Retrying connect to server: /192.168.13.129:9000. Already tried 2 time(s).
09/04/27 01:23:31 INFO ipc.Client: Retrying connect to server: /192.168.13.129:9000. Already tried 3 time(s).
09/04/27 01:23:32 INFO ipc.Client: Retrying connect to server: /192.168.13.129:9000. Already tried 4 time(s).
09/04/27 01:23:33 INFO ipc.Client: Retrying connect to server: /192.168.13.129:9000. Already tried 5 time(s).
09/04/27 01:23:34 INFO ipc.Client: Retrying connect to server: /192.168.13.129:9000. Already tried 6 time(s).
09/04/27 01:23:35 INFO ipc.Client: Retrying connect to server: /192.168.13.129:9000. Already tried 7 time(s).
09/04/27 01:23:36 INFO ipc.Client: Retrying connect to server: /192.168.13.129:9000. Already tried 8 time(s).
09/04/27 01:23:37 INFO ipc.Client: Retrying connect to server: /192.168.13.129:9000. Already tried 9 time(s).

查看log 日志vim logs/hadoop-root-namenode-cwb.com.log

ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /tmp/hadoop-root/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.

问题解决方法hadoop namenode -format

不过这个要注意,如果hdfs里面有数据,那么这么做之后,数据会丢失。


[j1]

必須是主控端ip名字

Ubuntu_10.04下Hadoop-0.20.2集群配置手册的更多相关文章

  1. Linux系统下安装Redis和Redis集群配置

    Linux系统下安装Redis和Redis集群配置 一. 下载.安装.配置环境: 1.1.>官网下载地址: https://redis.io/download (本人下载的是3.2.8版本:re ...

  2. Nginx+Tomcat+MemCached 集群配置手册

    系统实施文档 Nginx+Tomcat+MemCached 集群配置手册 目    录 第1章   概述 1.1   目标 互联网的快速发展带来了互联网系统的高负载和高可用性, 这要求我们在设计系统架 ...

  3. Hadoop(25)-高可用集群配置,HDFS-HA和YARN-HA

    一. HA概述 1. 所谓HA(High Available),即高可用(7*24小时不中断服务). 2. 实现高可用最关键的策略是消除单点故障.HA严格来说应该分成各个组件的HA机制:HDFS的HA ...

  4. hadoop-2.3.0-cdh5.1.0完全分布式集群配置HA配置

    一.安装前准备: 操作系统:CentOS 6.5 64位操作系统 环境:jdk1.7.0_45以上,本次采用jdk-7u55-linux-x64.tar.gz master01 10.10.2.57  ...

  5. hadoop-2.3.0-cdh5.1.0完全分布式集群配置及HA配置(待)

    一.安装前准备: 操作系统:CentOS 6.5 64位操作系统 环境:jdk1.7.0_45以上,本次采用jdk-7u55-linux-x64.tar.gz master01 10.10.2.57  ...

  6. hadoop之完全分布式集群配置(centos7)

    一.基础环境 现在我们有两台虚拟机了,再克隆两台: 克隆好之后需要做三件事:1.更改主机名称 2.修改ip地址 3.将ip地址和对应的主机号加入到/etc/hosts文件中 1.永久修改主机名 hos ...

  7. Ubuntu 16.04下使用docker部署ceph集群

    ceph集群docker部署 通过docker可以快速部署小规模Ceph集群的流程,可用于开发测试. 以下的安装流程是通过linux shell来执行的:假设你只有一台机器,装了linux(如Ubun ...

  8. CentOS系统下Hadoop 2.4.1集群安装配置(简易版)

    安装配置 1.软件下载 JDK下载:jdk-7u65-linux-i586.tar.gz http://www.oracle.com/technetwork/java/javase/downloads ...

  9. hadoop(四): 本地 hbase 集群配置 Azure Blob Storage

    基于 HDP2.4安装(五):集群及组件安装 创建的hadoop集群,修改默认配置,将hbase 存储配置为 Azure Blob Storage 目录: 简述 配置 验证 FAQ 简述: hadoo ...

随机推荐

  1. Elasticsearch .Net Client NEST 多条件查询示例

    Elasticsearch .Net Client NEST 多条件查询示例 /// <summary> /// 多条件搜索例子 /// </summary> public c ...

  2. Android群英传》读书笔记 (4) 第八章 Activity和Activity调用栈分析 + 第九章 系统信息与安全机制 + 第十章 性能优化

    第八章 Activity和Activity调用栈分析 1.Activity生命周期理解生命周期就是两张图:第一张图是回字型的生命周期图第二张图是金字塔型的生命周期图 注意点(1)从stopped状态重 ...

  3. Eclipse / Android : “Errors running builder 'Android Pre Compiler' on project…”

    Errors occurred during the build. Errors running builder 'Android Resource Manager' on project 'hell ...

  4. Win10安卓模拟器Visual Studio Emulator for Android使用简介(转)

    Visual Studio Emulator for Android是微软官方发布的独立版本的安卓模拟器,这款软件可以让安卓应用开发者更加轻松的用Visual Studio编写Android应用,据说 ...

  5. LayoutInflater类详解

    http://www.cnblogs.com/top5/archive/2012/05/04/2482328.html   在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于 ...

  6. 关于 ASP.NET 验证码

    Session["CheckCode"] 这个..不懂神马意思.. .创建一个用户控件 用户名:TextBox 密码: TextBox 验证码:TextBox 验证码图片 < ...

  7. 【cogs858】磁性链

    [题目描述] 有N块编号为1~N的特殊磁石相互吸附组成一条磁性链,只有它们紧挨着时才会传递吸力,他们之间的吸力很大,如果我们要从N块相连的磁石中取出一块,那么需要消耗N-1个单位的能量,空缺处不再有吸 ...

  8. 24种设计模式--单例模式【Singleton Pattern】

    这个模式是很有意思,而且比较简单,但是我还是要说因为它使用的是如此广泛,如此的有人缘,单例就是单一.独苗的意思,那什么是独一份呢?你的思维是 独一份,除此之外还有什么不能山寨的呢?我们举个比较难复制的 ...

  9. phpcms(3) V9 常用函数 及 代码整理(转)

    转自http://www.cnblogs.com/Braveliu/p/5103918.html 常用函数 及 常用代码 总结如下 <;?php //转换字符串或者数组的编码 str_chars ...

  10. 自定义复选框 checkbox 样式

    默认的复选框样式一般在项目中都很少用 ,看起来也丑丑的.这里提供一个优化样式后的复选框.原理就是隐藏掉默认样式,在用设计好的样式替代 html结构 <div> <input type ...