Hadoop 是 Google MapReduce 的一个 Java 实现。MapReduce 是一种简化的分布式编程模式,让程序自动分布到一个由普通机器组成的超大集群上并发执行。就如同 java 程序员可以不考虑内存泄露一样, MapReduce 的 run-time 系统会解决输入数据的分布细节,跨越机器集群的程序执行调度,处理机器的失效,并且管理机器之间的通讯请求。这样的模式允许程序员可以不需要有什么并发处理或者分布式系统的经验,就可以处理超大的分布式系统得资源。

部署 Hadoop

  Hadoop 部署分两步:名称节点(NameNode)无密码访问各数据节点(DataNode)和配置 Hadoop。

  我的实验环境为一个名称节点,一个数据节点.。在这个测试中,NameNode 的 IP: 10.15.51.18 (主机名 dxt-51-18),DataNode 的 IP: 10.15.51.19 (主机名 dxt-51-19),请注意,主机名在 Haddop 中很重要,并且不能使用下划线(_)!

名称节点(NameNode)无密码访问各数据节点(DataNode)

1. 名称节点和数据节点各自创建用户 Hadoop, 使用相同的密码。

$ useradd hadoop
$ passwd hadoop
# 输入 hadoop 做为密码  

2. 免密码 ssh 设置

  以 hadoop 用户名登陆名称节点执行

$ ssh-keygen  -t  rsa

  然后一路回车,完毕后生成文件 ~/.ssh/id_rsa.pub,把这个文件在当前目录(~/.ssh)复制一份,命名为 authorized_keys;然后执行命令

$ ssh 127.0.0.1

  如果不需要密码则直接登陆进去的话,就达到要求;否则需检查 authorized_keys 的权限,看是否为644(-rw-r–r–)。

  接下来,同样以 hadoop 用户登陆数据节点服务器,创建 ~/.ssh (如果没有的话)目录,并给与 700 权限(chmod 700 .ssh); 再把名称服务器上的authorized_keys 文件复制到目录 .ssh,注意权限和目录结构跟名称节点保持一致,然后再从名称节点用 ssh 登陆数据节点

$ ssh hadoop@10.15.51.19

  如果不需要密码能登陆成功,则 ssh 的配置结束。

配置 Hadoop

1. 下载 JRE 或 JDK

  从 http://www.java.com 上下载 JDK 并安装,我这里安装后 JDK 安装在了 /usr/java

2. 下载 Hadoop

  下载 Hadoop 到 /opt/server 目录下。(测试目的,实际部署可以放到合适的目录下)

$ cd /opt/server
$ wget http://labs.renren.com/apache-mirror/hadoop/core/hadoop-0.20.2/hadoop-0.20.2.tar.gz
$ tar xvzf hadoop-0.20.2.tar.gz
$ mv hadoop-0.20.2 hadoop

3. 设置

  修改 conf/hadoop-env.sh 文件,添加:

export JAVA_HOME=/usr/java/jdk1.6.0_21/

  注意:要根据实际情况设置 JAVA_HOME,此处只是例子

  在 /etc/hosts 增加

10.15.51.18     dxt-51-18
10.15.51.19     dxt-51-19
10.15.51.18     name.hadoop
10.15.51.19     data.hadoop

  其中 name.hadoop 和 data.hadoop 是后面会用到

4. 设置目录、文件的属主

$ chown -R  hadoop:hadoop  /opt/server/hadoop

5. core-site.xml

  在文件 conf/core-site.xml 的<configuration>与</configuration>中间插入如下内容:

<property>
<name>fs.default.name</name>
<value>hdfs://name.hadoop:9000</value>
<description>The name of the default file system. Either the literal string “local” or a host:port for DFS.</description>
</property> 

<property>
<name>hadoop.tmp.dir</name>
<value>/opt/server/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>

<property>
<name>dfs.name.dir</name>
<value>/opt/server/hadoop/filesystem/name</value>
<description>Determines where on the local filesystem the DFS name node should store the name table. If this is a comma-delimited list of directories then the name table is replicated in all of the directories, for redundancy. </description>
</property>

<property>
<name>dfs.data.dir</name>
<value>/opt/server/hadoop/filesystem/data</value>
<description>Determines where on the local filesystem an DFS data node should store its blocks. If this is a comma-delimited list of directories, then data will be stored in all named directories, typically on different devices. Directories that do not exist are ignored.
</description>

  其中 fs.default.name 的 value 最好使用域名,而不要用 IP 或主机名,本例中使用了一个本地解析的 name.hadoop 域名。

6. mapred-site.xml

  在文件 conf/mapred-site.xml 的<configuration>与</configuration>中间插入如下内容:

<property>
<name>mapred.job.tracker</name>
<value>name.hadoop:9001</value>
<description>The host and port that the MapReduce job tracker runs at. If “local”, then jobs are run in-process as a single map and reduce task.</description>
</property>

7. 其它

  修改文件 conf/slaves 及 conf/masters,把数据节点的主机名加到 slaves、名称节点主机名加到 masters。可以加多个,每行一个。

8. 数据节点

  在每个数据节点重复 1~7 这些步骤。

初始化并启动 Hadoop 集群

初始化

  Hadoop 的大部分操作都是在名称节点进行的。以 hadoop 用户登陆系统然后执行

$ bin/hadoop namenode -format

  一般都能顺利完成这个过程。执行完初始化后,各数据节点并没有进行任何操作(最重要的事情就是生成一堆目录)。

启动集群

  名称节点服务器以 hadoop 用户登陆,执行

$ conf/start-all.sh

   用

$ jps

   查看进程,如果正常,应该看见2-3个 java 进程。启动正常的话,数据节点开始生成相关的目录。

测试

1. 创建目录

$ bin/hadoop dfs -mkdir test

2. 传文件

$ bin/hadoop dfs -put xxx.file  test

3. 列目录

$ bin/hadoop dfs -ls test

  可以通过浏览器访问 http://10.15.51.18:50070 查看名称节点的存储情况;通过 http://10.15.51.18:50030 查看 Map/Reduce 情况

hadoop.txt · 最后更改: 2010/08/24 12:35 由 hex
到顶部
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0 红麦软件 红麦软件