5. 伪分布式模式的操作方法
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,以下是运行步骤。
(1)格式化一个新的分布式文件系统:
$ bin/hdfs namenode -format
(2)启动 NameNode 守护进程和 DataNode 守护进程:
$ sbin/start-dfs.sh
Hadoop 守护进程的日志写入到 $HADOOP_LOG_DIR
目录(默认是 $HADOOP_HOME/logs
)
(3)浏览 NameNode 的网络接口,它们的地址默认为:
NameNode - http://localhost:50070/
(4)创建 HDFS 目录来执行 MapReduce 的 job:
$ bin/hdfs dfs -mkdir /user
$ bin/hdfs dfs -mkdir /user/<username>
(5)将输入文件拷贝到分布式文件系统:
$ bin/hdfs dfs -put etc/hadoop input
(6)运行发行版提供的示例程序:
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output 'dfs[a-z.]+'
(7)查看输出文件
将输出文件从分布式文件系统拷贝到本地文件系统查看:
$ bin/hdfs dfs -get output output
$ cat output/*
或者,在分布式文件系统上查看输出文件:
$ bin/hdfs dfs -cat output/*
(8)完成全部操作后,停止守护进程:
$ sbin/stop-dfs.sh
运行在单节点的 YARN
您可以通过设置几个参数,另外运行 ResourceManager 的守护进程和 NodeManager 守护进程以伪分布式模式在 YARN 上运行 MapReduce job。
以下是运行步骤。
(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>
</configuration>
(2)启动 ResourceManager 守护进程和 NodeManager 守护进程
$ sbin/start-yarn.sh
(3)浏览 ResourceManager 的网络接口,它们的地址默认为:
ResourceManager - http://localhost:8088/
(4)运行 MapReduce job
(5)完成全部操作后,停止守护进程:
$ sbin/stop-yarn.sh