本文档介绍如何设置和配置单节点Hadoop安装,以便您能快速使用Hadoop MapReduce和Hadoop分布式文件系统(HDFS)执行简单操作。
重要: 所有生产环境的Hadoop集群都使用Kerberos来验证调用者身份,保护HDFS数据访问安全,并限制对计算服务(YARN等)的访问。
这些说明不涉及与任何Kerberos服务的集成 - 每个搭建生产集群的人都应将连接到其组织的Kerberos基础设施作为部署的关键部分。
有关如何保护集群安全的详细信息,请参阅Security。
Linux所需的软件包括:
必须安装Java™。推荐的Java版本请参阅HadoopJavaVersions。
如果要使用可选的启动和停止脚本管理远程Hadoop守护进程,必须安装ssh且sshd服务需保持运行。此外,建议同时安装pdsh以实现更优的ssh资源管理。
如果您的集群没有所需的软件,您将需要安装它。
例如在Ubuntu Linux系统上:
$ sudo apt-get install ssh $ sudo apt-get install pdsh
要获取Hadoop发行版,请从Apache下载镜像站下载最新的稳定版本。
解压下载的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进程。这对调试很有用。
以下示例将解压后的conf目录复制作为输入使用,然后查找并显示给定正则表达式的所有匹配项。输出结果会写入指定的输出目录。
$ mkdir input $ cp etc/hadoop/*.xml input $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.4.1.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-keygen -t rsa -P '' -f ~/.ssh/id_rsa $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 0600 ~/.ssh/authorized_keys
以下说明用于在本地运行MapReduce作业。如需在YARN上执行作业,请参阅YARN on Single Node。
格式化文件系统:
$ bin/hdfs namenode -format
启动NameNode守护进程和DataNode守护进程:
$ sbin/start-dfs.sh
hadoop守护进程的日志输出会写入$HADOOP_LOG_DIR
目录(默认为$HADOOP_HOME/logs
)。
浏览NameNode的网页界面;默认情况下,它可以通过以下地址访问:
http://localhost:9870/
创建执行MapReduce作业所需的HDFS目录:
$ bin/hdfs dfs -mkdir -p /user/
将输入文件复制到分布式文件系统中:
$ bin/hdfs dfs -mkdir input $ bin/hdfs dfs -put etc/hadoop/*.xml input
运行一些提供的示例:
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.4.1.jar grep input output 'dfs[a-z.]+'
检查输出文件:将输出文件从分布式文件系统复制到本地文件系统并查看:
$ bin/hdfs dfs -get output output $ cat output/*
或
在分布式文件系统上查看输出文件:
$ bin/hdfs dfs -cat output/*
完成后,使用以下命令停止守护进程:
$ sbin/stop-dfs.sh
您可以通过设置一些参数并额外运行ResourceManager守护进程和NodeManager守护进程,在YARN上以伪分布式模式运行MapReduce作业。
以下说明假设上述说明中的第1步至第4步已执行完成。
按如下方式配置参数:
etc/hadoop/mapred-site.xml
:
mapreduce.framework.name yarn mapreduce.application.classpath $HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*
etc/hadoop/yarn-site.xml
:
yarn.nodemanager.aux-services mapreduce_shuffle yarn.nodemanager.env-whitelist JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME
启动ResourceManager守护进程和NodeManager守护进程:
$ sbin/start-yarn.sh
浏览ResourceManager的网页界面;默认情况下可通过以下地址访问:
http://localhost:8088/
运行一个MapReduce作业。
完成后,使用以下命令停止守护进程:
$ sbin/stop-yarn.sh
有关设置完全分布式、非平凡集群的信息,请参阅集群设置。