---
layout: post
title: 02.hadoop-2.7.2官网文档翻译-单节点集群安装
category: 技术
tags: Hadoop
keywords:
description:
---
{:toc}
### 目标
该文档讲述怎样安装并配置单节点Hadoop安装,因此你可以快速使用MapReduce和HDFS执行简单的操作
### 先决条件
- 支持平台
- CNU/Linux 支持作为开发和生产环境平台。Hadoop在GNU/Linux系统上已经过2000节点集群的论证。
- 也支持window,但以下步骤只是针对于Linux。Window上安装Hadoop请移步[wiki page](http://wiki.apache.org/hadoop/Hadoop2OnWindows)
- 需要的软件
- JAVA 必须安装,推荐的java版本请看[HadoopJavaVersions](http://wiki.apache.org/hadoop/HadoopJavaVersions)
- SSH 必须安装,因为在使用Hadoop脚本管理远程Hadoop守护进程的时候必须保证sshd运行。
- 安装软件
如果你的集群没有需要的软件,需要安装它。
比如在Ubuntu上:
```
$sudo apt-get install ssh
$sudo apt-get install rsync
```
### 下载
为了获得Hadoop分发版,从[Apache下载镜像站](http://www.apache.org/dyn/closer.cgi/hadoop/common/)之一下载最新的稳定版。
### 准备开始Hadoop集群
解压下载的Hadoop版本压缩包。在发布版中,编辑文件`etc/hadoop/hadoop-env.sh`来定义一些参数。如下:
```
#设置安装的java的home目录
export JAVA_HOME=/usr/local/jdk
```
尝试命令:`$bin/hadoop`,该命令将会显示Hadoop脚本的帮助信息。
现在你可以在三种支持模式(`本地模式`,`伪分布模式`,`完全分布式模式`)的任一种中开始你的Hadoop集群了。
### 脱机操作
默认情况下,Hadoop被配置为运行在非分布式模式,作为单java进程,这对调试很有用。
下面的例子是复制解压的配置目录作为输入,然后查找并显示每个匹配的给定的正则表达式。输出到指定的输出目录
```
$ mkdir input
$ cp etc/hadoop/*.xml input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'
$ cat output/*
```
### 伪分布操作
Hadoop也可以在伪分布式模式下运行在但节点上,每个Hadoop守护进程运行在分开的java进程中。
#### 配置
使用如下配置
修改`etc/hadoop/core-site.xml`
```
fs.defaultFS
hdfs://localhost:9000
```
修改`etc/hadoop/hdfs-site.xml`
```
dfs.replication
1
```
#### 设置ssh免密码登录
现在检查是否可以不使用秘钥就能登录localhost:`$ssh localhost`。
如果不能免密码登录,执行如下的命令:
```
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
```
#### 执行
接下来要在本地运行一个MapReduce任务。如果你想要在YARN执行任务,可以看[YARN on Single Node](执行在yarn上的单点)
1. 格式化文件系统
`$ bin/hdfs namenode -format`
1. 启动NameNode进程和DataNode进程
`$ sbin/start-dfs.sh`
该Hadoop的进程日志输入目录为`$HADOOP_LOG_DIR`,默认为`$HADOOP_LOG_DIR`/log。
1. 在web接口上查看NameNode,默认为
- NameNode : http://localhost:50070
1. 创建HDFS目录来执行MapReduce任务
```
$ bin/hdfs dfs -mkdir /user
$ bin/hdfs dfs -mkdir /user/
```
1. 复制input中的文件到DFS中
` $ bin/hdfs dfs -put etc/hadoop input`
1. 运行已经提供好的例子
`$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'`
1. 检验输出文件:复制HDFS中output目录下的文件到本地文件系统,并检验他们
```
$ bin/hdfs dfs -get output output
$ cat output/*
```
或者直接在HDFS上查看output文件
```
$ bin/hdfs dfs -cat output/*
```
1. 操作完成后,停止HDFS的进程
`$sbin/stop-dfs.sh`
1. 单点上的YARN
通过设置几个参数,并在运行ResourceManager 和NodeManager 的进程的条件下,可以伪分布式模式的YARN上运行MapReduce任务
下面假定上文中的1. ~ 4. 步骤已经成功执行
1. 配置参数,修改`etc/hadoop/mapred-site.xml`
```xml
mapreduce.framework.name
yarn
```
修改`etc/hadoop/yarn-site.xml`
```xml
yarn.nodemanager.aux-services
mapreduce_shuffle
```
2. 启动YARN,ResourceManager进程和NodeManager 进程
` $ sbin/start-yarn.sh`
3. 在浏览器中查看ResourceManager,默认值为
- ResourceManager: http://localhost:8088/
4. 运行Mapreduce任务
5. 当完成操作后,停止yarn进程
`$ sbin/stop-yarn.sh`
### 完全分布式操作
完全分布式安装,非平凡的集群请看[集群安装]({% post_url 2016-07-04-3-hadoop-doc-translate %}){:title="集群安装" :target="_blank"}