Home > programming > How to set up hadoop cluster 1

How to set up hadoop cluster 1


 

 

http://jiajun.iteye.com/blog/622475
http://jiajun.iteye.com/blog/624559

一、准备工作:
Hadoop分布式文件系统,架构和设计 :http://hadoop.apache.org/common/docs/r0.20.2/cn/hdfs_design.html
Hadoop快速入门:http://hadoop.apache.org/common/docs/r0.20.2/cn/quickstart.html
SSH认证登录(可后看):http://www.ibm.com/developerworks/cn/linux/security/openssh/part1/index.html

二、下面实际操作,初步感受分布式文件系统:
1、ssh安装(linux:openssh,windwos:要先安装Cygwin),略过

2、下载Hadoop的发行版,从Apache的某个镜像服务器上下载最近的 稳定发行版:

http://hadoop.apache.org/core/releases.html,解压所下载的Hadoop发行版。

$ wget http://labs.renren.com/apache-mirror/hadoop/core/hadoop-0.20.2/hadoop-0.20.2.tar.gz
$ tar -zxvf hadoop-0.20.2.tar.gz
$ cd hadoop-0.20.2

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

4、稍微熟悉下使用文档

$ bin/hadoop //将会显示hadoop 脚本的使用文档。

现在你可以用以下三种支持的模式中的一种启动Hadoop集群:

* 单机模式
* 伪分布式模式
* 完全分布式模式

5、单机模式的操作方法

默认情况下,Hadoop被配置成以非分布式模式运行的一个独立Java进程。这对调试非常有帮助。

下面的实例将已解压的 conf 目录拷贝作为输入,查找并显示匹配给定正则表达式的条目。输出写入到指定的output

目录。

$ mkdir input
$ cp conf/*.xml input

我们看看下面的查找:

$ egrep dfs[a-z.]+ input/*

输出:
input/hadoop-policy.xml:    dfsadmin and mradmin commands to refresh the security policy in-effect.

运行hadoop命令:

$ bin/hadoop jar hadoop-0.20.2-examples.jar grep input output ‘dfs[a-z.]+’

执行上面的命令,会有一些输出日志,随便看看,了解了解。

$ cat output/*

结果:
1       dfsadmin

6、伪分布式模式的操作方法

Hadoop可以在单节点上以所谓的伪分布式模式运行,此时每一个Hadoop守护进程都作为一个独立的Java进程运行。

6.1、配置 (中文官方文档落后了,我上面的链接是中文文档,请自己转到英文文档看):

 

conf/core-site.xml

  1. <configuration>
  2. <property>
  3.     <name>fs.default.name</name>
  4.     <value>hdfs://localhost:9000</value>
  5.   </property>
  6. </configuration>

 conf/hdfs-site.xml

  1. <configuration>
  2.         <property>
  3.                 <name>dfs.name.dir</name>
  4.                 <value>/home/lighttpd/hadoopfs/name</value>
  5.         </property>
  6.         <property>
  7.                 <name>dfs.data.dir</name>
  8.                 <value>/home/lighttpd/hadoopfs/data</value>
  9.         </property>
  10.         <property>
  11.                 <name>dfs.replication</name>
  12.                 <value>1</value>
  13.         </property>
  14. </configuration>

 conf/mapred-site.xml

  1. <configuration>
  2.         <property>
  3.                 <name>mapred.job.tracker</name>
  4.                 <value>localhost:9001</value>
  5.         </property>
  6. </configuration>

 
6.2、免密码ssh设置(参考我的另外一篇文章:http://jiajun.iteye.com/blog/621309)

现在确认能否不输入口令就用ssh登录localhost:

$ ssh localhost

如果不输入口令就无法用ssh登陆localhost,执行下面的命令:

$ ssh-keygen -t dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

6.3、格式化一个新的分布式文件系统

$ bin/hadoop namenode -format

注意看看输出日志哦,有助于理解。

6.4、启动Hadoop守护进程:

$ bin/start-all.sh

如果你设置了ssh的RSA认证,就不用输入密码,不然就要输入三次密码登录

6.5、日志

Hadoop守护进程的日志写入到 ${HADOOP_LOG_DIR} 目录 (默认是 ${HADOOP_HOME}/logs).

6.6、浏览NameNode和JobTracker的网络接口,它们的地址默认为:

* NameNode – http://localhost:50070/
* JobTracker – http://localhost:50030/

浏览观察一下,会看懂甚至更好的理解一些东西。
6.7、将输入文件拷贝到分布式文件系统:

$ bin/hadoop fs -put conf input //把本地的文件夹conf拷贝到分布式文件系统input文件夹

$ bin/hadoop fs -ls input //浏览分布式文件系统中的input文件

上面的命令是hadoop的,你可以输入下面命令,获取帮助

$ bin/hadoop fs

6.8、运行发行版提供的示例程序:

$ bin/hadoop jar hadoop-*-examples.jar grep input output ‘dfs[a-z.]+’

查看输出文件:

$ bin/hadoop fs -get output output // 将输出文件从分布式文件系统拷贝到本地文件系统
$ cat output/*

或者,在分布式文件系统中查看:
$ bin/hadoop fs -cat output/*

6.9、你可以多试试bin/hadoop fs 下的java FsShell,和操作本地文件差不多,很快能熟悉。

6.10、最后,完成全部操作后,可以停止守护进程:

$ bin/stop-all.sh

bin下面有很多shell脚本这时可以适当看看名称,猜个大概意思。

下面我会继续给大家一个完全分布式模式的操作方法,敬请稍候。

 

 

Advertisements
Categories: programming
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: