目的

本文档介绍了如何设置和配置单节点Hadoop安装,以便您可以使用Hadoop MapReduce和Hadoop分布式文件系统(HDFS)快速执行简单的操作。

先决条件

支持平台
支持GNU / Linux作为开发和生产平台。 Hadoop在具有2000个节点的GNU / Linux集群上得到了证明。

Windows也是受支持的平台,但是以下步骤仅适用于Linux。 要在Windows上设置Hadoop,请参见Wiki页面

https://cwiki.apache.org/confluence/display/HADOOP2/Hadoop2OnWindows

需要的软件支撑

Linux所需的软件包括:

必须安装Java™。 HadoopJavaVersions中描述了推荐的Java版本。

https://cwiki.apache.org/confluence/display/HADOOP2/HadoopJavaVersions

如果要使用可选的启动和停止脚本,则必须安装ssh且sshd必须正在运行以使用管理远程Hadoop守护程序的Hadoop脚本。 另外,建议也安装pdsh以便更好地进行ssh资源管理。

安装软件:

需要安装

ssh pdsh 

---------------------------------------------------------------------------------

下载hadoop 版本

http://www.apache.org/dyn/closer.cgi/hadoop/common/
-----------------------------------------------------------------------------------可以下载相应的版本

准备启动Hadoop集群

解压缩下载的Hadoop发行版。 在发行版中,编辑文件/etc/hadoop/ hadoop-env.sh以定义一些参数,如下所示:

 vi  /usr/local/hadoop-3.2.1/etc/hadoop/hadoop-env.sh 
修改内容
export JAVA_HOME=/usr/local/jdk1.8.0_251

进行测试
/usr/local/hadoop-3.2.1/bin/hadoop

[root@nn2 bin]# /usr/local/hadoop-3.2.1/bin/hadoop
Usage: hadoop [OPTIONS] SUBCOMMAND [SUBCOMMAND OPTIONS]
 or    hadoop [OPTIONS] CLASSNAME [CLASSNAME OPTIONS]
  where CLASSNAME is a user-provided Java class

  OPTIONS is none or any of:

buildpaths                       attempt to add class files from build tree
--config dir                     Hadoop config directory
--debug                          turn on shell script debug mode
--help                           usage information
hostnames list[,of,host,names]   hosts to use in slave mode
hosts filename                   list of hosts to use in slave mode
loglevel level                   set the log4j level for this command
workers                          turn on worker mode

  SUBCOMMAND is one of:


    Admin Commands:

daemonlog     get/set the log level for each daemon

    Client Commands:

archive       create a Hadoop archive
checknative   check native Hadoop and compression libraries availability
classpath     prints the class path needed to get the Hadoop jar and the required libraries
conftest      validate configuration XML files
credential    interact with credential providers
distch        distributed metadata changer
distcp        copy file or directories recursively
dtutil        operations related to delegation tokens
envvars       display computed Hadoop environment variables
fs            run a generic filesystem user client
gridmix       submit a mix of synthetic job, modeling a profiled from production load
jarrun a jar file. NOTE: please use "yarn jar" to launch YARN applications, not this command.
jnipath       prints the java.library.path
kdiag         Diagnose Kerberos Problems
kerbname      show auth_to_local principal conversion
key           manage keys via the KeyProvider
rumenfolder   scale a rumen input trace
rumentrace    convert logs into a rumen trace
s3guard       manage metadata on S3
trace         view and modify Hadoop tracing settings
version       print the version

    Daemon Commands:

kms           run KMS, the Key Management Server

SUBCOMMAND may print help when invoked w/o parameters or with -h.

会出现以上的内容
这将显示hadoop脚本的用法文档。

现在,您可以以三种支持的模式之一启动Hadoop集群:

独立运行
默认情况下,Hadoop被配置为在非分布式模式下作为单个Java进程运行。 这对于调试很有用。

下面的示例复制解压缩的conf目录以用作输入,然后查找并显示给定正则表达式的每个匹配项。 输出被写入给定的输出目录。

mkdir input
cp etc/hadoop/*.xml input
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input output 'dfs[a-z.]+'
cat output/*

伪分布式配置及测试

Hadoop也可以以伪分布式模式在单节点上运行,其中每个Hadoop守护程序都在单独的Java进程中运行。

修改hadoop hfds 的配置文件,修改hdfs-site.xml的配置文件

[root@nn4 ~]# more  /usr/local/hadoop-3.2.1/etc/hadoop/core-site.xml 


fs.defaultFShdfs://localhost:9000

修改hadoop core 的配置文件  

修改hadoop dfs 的配置文件dfs.replication1设置无密码SSH
现在检查您是否可以在没有密码的情况下SSH到本地主机:

如果没有密码就无法SSH到本地主机,请执行以下命令:
$ 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”。

格式化文件系统:
bin/hdfs namenode -format
启动NameNode守护程序和DataNode守护程序:
需要修改的内容
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

 $ sbin/start-dfs.sh
hadoop守护程序日志输出将写入$ HADOOP_LOG_DIR目录(默认为$ HADOOP_HOME / logs)。

可通过
http://192.168.49.134:9870/explorer.html#/ 进行访问

创建hdfs的目录然后执行任务

bin/hdfs dfs -mkdir /user/
bin/hdfs dfs -mkdir /user/root 
将文件放入指定的目录 
 bin/hdfs dfs -mkdir input
bin/hdfs dfs -put etc/hadoop/*.xml input
查看文件存放的目录 
bin/hdfs dfs -ls input

 bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input output 'dfs[a-z.]+'

 
bin/hdfs dfs -get output output
cat output/*
或者  bin/hdfs dfs -cat output/*

停止dfs ./stop-dfs.sh 

您可以通过设置一些参数并另外运行ResourceManager守护程序和NodeManager守护程序,以伪分布式模式在YARN上运行MapReduce作业。

以下指令假定上述指令的1.〜4.步骤已经执行。

如下配置参数:

配置mapred-site.xml

mapreduce.framework.nameyarnmapreduce.application.classpath$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*etc/hadoop/yarn-site.xml:yarn.nodemanager.aux-servicesmapreduce_shuffleyarn.nodemanager.env-whitelistJAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME启动nodemanager 和 resourcemanager 
 sbin/start-yarn.sh

可以通过浏览器进行检查
http://192.168.49.134:8088/cluster/scheduler

可以通过
sbin/stop-yarn.sh