2012年4月19日星期四

Hadoop基础篇之(一)安装部署

1. 下载hadoop
从http://hadoop.apache.org/common/releases.html下载一个hadoop的发行版本,此处使用wget方式,wget http://mirror.bjtu.edu.cn/apache/hadoop/core/hadoop-1.0.2/hadoop-1.0.2.tar.gz

解压下载的压缩包到 home/<your dictionary>/hadoop
tar –zvxf hadoop-1.0.2.tar.gz

2. set JAVA_HOME / PATH
打开.bash_profile文件
$ vi ~/.bash_profile

export JAVA_HOME=<path-to-java>
export PATH=$PATH:<path-to-java>/bin

保存退出,查看配置是否成功
$ echo $JAVA_HOME
$ echo $PATH

HADOOP_HOME是可选的,并且在hadoop-1.0.2下,配置HADOOP_HOME会抛一个警告:“Warning: $HADOOP_HOME is deprecated.”,所以实际配置中,可以不用设置HADOOP_HOME

检查配置是否成功
$ bin/hadoop
打印以下内容说明配置成功
Usage: hadoop [--config confdir] COMMAND
where COMMAND is one of:
  namenode -format     format the DFS filesystem
  secondarynamenode    run the DFS secondary namenode
  namenode             run the DFS namenode
  datanode             run a DFS datanode
  ...

伪分布式模式的配置

3. 配置相关配置文件
(1) conf/core-site.xml:
<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:9000</value>
  </property>
</configuration>

(2) conf/hdfs-site.xml:
<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>

(3) conf/mapred-site.xml:
<configuration>
  <property>
    <name>mapred.job.tracker</name>
    <value>hdfs://localhost:9001</value>
  </property>
</configuration>

4. 免密码ssh设置
现在确认能否不输入口令就用ssh登录localhost:
$ ssh localhost

如果不输入口令就无法用ssh登陆localhost,执行下面的命令:
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

5. 执行
(1) 格式化分布式文件系统:
$ bin/hadoop namenode -format

(2) 启动Hadoop守护进程:
$ bin/start-all.sh
Hadoop守护进程的日志写入到 ${HADOOP_LOG_DIR} 目录 (默认是 ${HADOOP_HOME}/logs)

(3) 运行示例程序:
将输入文件拷贝到分布式文件系统:
$ bin/hadoop fs -mkdir input
$ bin/hadoop fs -put conf input
运行发行版提供的示例程序:
$ bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+'

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

浏览NameNode和JobTracker的网络接口,它们的地址默认为:
NameNode - http://localhost:50070/
JobTracker - http://localhost:50030/

6. 停止守护线程
完成全部操作后,停止守护进程:
$ bin/stop-all.sh

7. 实战——WordCount
WordCount在Hadoop主目录下的java程序包hadoop-examples-1.0.2.jar 中
重新启动守护线程:
$ bin/start-all.sh
建立一个新目录,此处命名为testfile
$ bin/hadoop fs -mkdir testfile
在本地/home/usr/hadoop/tmp目录中建立一个txt文件test.txt,并填写如下内容:
hello world
hello I am a engineer
world peace
然后将此文件copy到分布式文件系统的testfile里:
$ bin/hadoop fs -put /home/usr/hadoop/tmp/test.txt testfile

执行wordcount程序:
$ bin/hadoop jar hadoop-examples-1.0.2.jar wordcount testfile output
注意:在执行上面的命令之前,需要先删除分布式文件系统中的output目录,因为hdfs中job之间的输出目录是不允许重复的,否则会抛如下的错误:
‘org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory output already exists’
删除命令:
$ bin/hadoop dfs -rmr output

查看执行结果:
$  bin/hadoop dfs -cat output/part-r-00000
I           1
a           1
am          1
engineer    1
hello       2
peace       1
world       2

没有评论:

发表评论