目的
能够快速的在一单个节点上构建和配置 Hadoop,使用 MapReduce 和 Hadoop Distributed File System(HDFS)来执行简单的操作。
准备
支持平台
建议使用 GNU/Linux 作为开发和运行平台。
所需软件
Linux 下所需要的软件是:
- 必须安装 Java
TM ,Hadoop 2.7 及以上版本需要 Java 7。
- linux下配置 Oracle JDK
- 必须安装 ssh,sshd服务必须运行,来使用 Hadoop 脚本来管理远程 Hadoop 服务。同时,也建议安装 pdsh,更好地进行 ssh 资源管理。
下载
从 Apache 下载镜像 下载最近的稳定发布版。我所下载的是 hadoop-2.9.0.tar.gz
。
开始 Hadoop 集群前的准备
将 Hadoop 包解压到指定目录下。进入 Hadoop 目录,编辑 etc/hadoop/hadoop-env.sh,定义以下参数:
# set to the root of your Java installation
export JAVA_HOME=/usr/java/latest
测试以下命令:
$ bin/hadoop
该命令将会显示 hadoop 脚本的使用文档。
接下来便能够选择以下三种模式中的一种来开始 Hadoop 集群:
- 本地(脱机)模式
- 假分布模式
- 全分布模式
脱机模式
Hadoop 默认以非分布模式运行,仅作为单一 Java 进程,这是有利于调试的。
假分布模式
Hadoop 也可以在单一结点上以假分布模式运行,每个 Hadoop服务分别以不同的 Java 进程运行。
配置
使用以下配置:
etc/hadoop/core-site.xml
:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
etc/hadoop/hdfs-site.xml
:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
建立免密码的 ssh
现在检查是否可以免密码 ssh 到 localhost:
$ ssh localhost
如果不能,则执行以下命令:
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
运行
格式化文件系统:
$ bin/hdfs namenode -format
开启 NameNode 服务和 DataNode服务:
$ sbin/start-dfs.sh
可以通过以下 IP 访问 NameNode 的 Web 接口:
Shell操作
将本地源文件<localsrc>复制到路径<dst>指定的文件或文件夹中去:
hadoop fs -copyFromLocal <localsrc> <dst>
hdfs dfs -copyFromLocal <localsrc> <dst>
$ bin/hadoop fs -copyFromLocal /home/bob/tmpfile/* hdfs://127.0.0.1:9000/tmpDir/
$ bin/hdfs dfs -copyFromLocal /home/bob/tmpfile/* /tmpDir/
创建<path>指定的文件夹:
hadoop fs -mkdir <path>
hdfs dfs -mkdir <path>
$ bin/hadoop fs -mkdir hdfs://127.0.0.1:9000/tmpDir
$ bin/hdfs dfs -mkdir /tmpDir
显示<path>指定目录的清单:
hadoop fs -ls <path>
hdfs dfs -ls <path>
$ bin/hadoop fs -ls hdfs://127.0.0.1:9000/
$ bin/hdfs dfs -ls /