目的
本文主要讲解的是在单节点下的Hadoop的环境安装和配置,以帮助您可以快速的使用Hadoop的MapReduce和HDFS前提条件
环境支持
GNU/Linux现已支持开发和生产环境. Hadoop可以在 GNU/Linux集群上支持2000节点。Windows现也支持但是没有Linux那么先进.关于如何在Windows上配置Hadoop ,请查看链接 wiki page
必需的软件
Linux下需要的软件包括:1. Java™必须已经安装好.与Hadoop版本对应的JDK版本请参考 HadoopJavaVersions.
2. 如果使用Hadoop脚本对Hadoop的守护进程进行远程管理。必须安装ssh并且启动sshd服务。
软件安装
如果您的集群没有安装对应的软件,你需要安装它们。以Ubuntu Linu为例:
$ sudo apt-get install ssh
$ sudo apt-get install pdsh
Hadoop下载
获取最新的Hadoop,您可以从Apache的下载镜像中进行选择下载 Apache Download Mirrors.搭建Hadoop Cluster
准备工作
解压Hadoop压缩包。然后进入目录。编辑etc/hadoop/hadoop-env.sh的下列参数:# set to the root of your Java installation
# set to the root of your Java installation
export JAVA_HOME=/usr/java/latest
保存退出后,执行以下命令:
$ bin/hadoop
它将显示hadoop脚本可用的文件。
现在您可以开始从下列三种支持的Hadoop cluster模式中选择一种来进行环境搭建了:
- 本地(单机)模式
- 伪分布式模式
- 分布式模式
单机设置
默认情况下,Hadoop的配置是非分布式模式,就像一个Java进程一样,它有利于进行debug调试。您可以复制下个例子中的代码到解压路径下进行执行根据指定的表达式,匹配查找每次输入的结果,并且对其进行输出到output路径下。。
$ mkdir input
$ cp etc/hadoop/*.xml input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0.jar grep input output 'dfs[a-z.]+'
$ cat output/*
伪分布式设置
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下localhost免密码模式。执行下列命令:
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
执行
下列一系列的指令是配置配置MapReduce job的。如果您想在YARN上执行job。可以查看YARN单节点配置。1. 格式化HDFS文件系统:
$ bin/hdfs namenode -format
2. 启动NameNode守护进程和DataNode守护进程:
$ sbin/start-dfs.sh
3. hadoop守护进程日志输出到$HADOOP_LOG_DIR 路径 (默认为 $HADOOP_HOME/logs)。
4. 通过浏览器访问NameNode的web接口,默认地址为:http://localhost:9870/。
5. 创建需执行MapReduce jobs的HDFS目录:
$ bin/hdfs dfs -mkdir input
$ bin/hdfs dfs -put etc/hadoop/*.xml input
6. 复制input文件到分布式文件系统:
$ bin/hdfs dfs -mkdir input
$ bin/hdfs dfs -put etc/hadoop/*.xml input
7. 运行提供的示例程序:
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0.jar grep input output 'dfs[a-z.]+'
8. 检查输出文件:从分布式文件系统复制output文件到本地然后进行检查:
$ bin/hdfs dfs -get output output
$ cat output/*
或
直接在分布式文件系统中进行查看:
$ bin/hdfs dfs -cat output/*
9. 当您已经完成上面所有的工作的时候,您可以停止守护进程了:
$ sbin/stop-dfs.sh
YARN上运行单点
您可以在单点模式的YARN上运行MapReduce job。您只需要增加ResourceManager守护进程和NodeManager守护进程设置就可以了。其实现方式通过下面1~4步骤进行配置:
1. 配置参数如下:
etc/hadoop/mapred-site.xml:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
etc/hadoop/yarn-site.xml:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
2. 启动 ResourceManager守护进程和NodeManager守护进程:
$ sbin/start-yarn.sh
3. 通过浏览器访问ResourceManager的web接口,默认地址为: http://localhost:8088/
4. 运行一个 MapReduce job.
5. 当您已经完成上面所有的工作的时候,您可以停止守护进程了:
$ sbin/stop-yarn.sh