本帖最后由 测试积点老人 于 2019-1-10 15:14 编辑
目的本文的目的主要是为了说明如何单点配置hadoop,从而能使用单个节点进行Hadoop MapReduce 和Hadoop Distributed File System (HDFS)运算。
先决条件
平台支持- GNU/Linux 作为开发和生产环境. Hadoop 已经在 GNU/Linux 上验证了 2000 个节点的集群.
- Win32 也可以作为开发环境. 分布式操作不能再 Win32上进行很好的测试, 所以不能作为生产环境。
必要的软件无论在Linux 还是在 Windows都需要如下软件: - JavaTM 1.6.x, 最好使用Sun的,一定要安装.
- ssh 一定要安装并且 sshd 一定要处于运行状态,从而使Hadoop scripts可以管理远程Hadoop实例(Hadoop daemons).
另外 Windows 环境还需要安装如下软件: Cygwin - 为以上安装的软件提供shell脚本支持.
安装软件如果你的集群没有安装必要的软件,请安装他们. Ubuntu Linux 的一个例子: - $ sudo apt-get install ssh
- $ sudo apt-get install rsync
复制代码
在 Windows上, 如果在你安装cygwin的时候你没有安装必要的软件, 开启cygwin安装软件选择如下文件夹:
- openssh - the Net category
下载从这里下载一个稳定版本 stable release .
准备开始配置Hadoop解压下载的Hadoop distribution文件. 编辑 conf/hadoop-env.sh 定义 JAVA_HOME 到你的安装目录. 尝试使用如下命令:
将展示出对于使用 hadoop script 有用的文档信息.
现在你可以开始以下三种中的一种你的开启你的 Hadoop cluster : - 单机模式(Local (Standalone) Mode)
- 伪分布式模式(Pseudo-Distributed Mode)
- 全分布式模式(Fully-Distributed Mode)
单机模式操作在默认情况下会以非分布式模式(non-distributed mode)作为一个Java进程运行.这样做的好处是有利于调试..
The following example copies the unpacked conf directory to use as input and then finds and displays every match of the given regular expression. Output is written to the given output directory. - $ mkdir input
- $ cp conf/*.xml input
- $ bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+'
- $ cat output/*
复制代码
伪分布式模式操作Hadoop也可以运行一个单点,每个Hadoop 实例(daemon) 以一个独立的Java进程运行,从而使Hadoop以伪分布式模式运行。
配置如下使用如下配置:
conf/core-site.xml: - <configuration>
- <property>
- <name>fs.default.name</name>
- <value>hdfs://localhost:9000</value>
- </property>
- </configuration>
复制代码
conf/hdfs-site.xml: - <configuration>
- <property>
- <name>dfs.replication</name>
- <value>1</value>
- </property>
- </configuration>
复制代码
conf/mapred-site.xml: - <configuration>
- <property>
- <name>mapred.job.tracker</name>
- <value>localhost:9001</value>
- </property>
- </configuration>
复制代码
设置无密码 ssh检查您可以通过 ssh登录 localhost 不适用密码:
If you cannot ssh to localhost without a passphrase, execute the following commands:
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
运行格式化一个分布式文件系统: - $ bin/hadoop namenode -format
复制代码
运行hadoop daemons:
hadoop daemon 把日志输出在 ${HADOOP_LOG_DIR} 指定的目录下 (默认在 ${HADOOP_HOME}/logs).
浏览NameNode和JobTracker的web接口,默认情况下在:
拷贝文件到分布式系统: - $ 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/*
复制代码
或者,你也可以这么做, 浏览分布式系统上输出的文件: - $ bin/hadoop fs -cat output/*
复制代码
当你完成工作之后,使用如下命令停止daemons:
|