Hadoop v3.1.2 伪分布式安装(Pseudo-Distributed Operation)

大数据处理框架Hadoop

Hadoop 生态系统已经变得非常成熟和完善,包括Zookeeper、HDFS、MapReduce、HBase、Hive、Pig等子项目,其中HDFS和MapReduce是Hadoop的两大核心组件。

Hadoop v3.1.2 伪分布式安装(Pseudo-Distributed Operation)

Hadoop伪分布式安装(Pseudo-Distributed Operation)

CentOS 7 单机安装最新版Hadoop v3.1.2以及配置和简单测试

介绍了单机模式的安装。接下来,本文演示如何在Linux环境下,进行伪分布式模式的安装,并运行Hadoop自带的WordCount实例检测是否运行正常。

Hadoop 支持如下三种模式的安装。

Hadoop v3.1.2 伪分布式安装(Pseudo-Distributed Operation)

其中,伪分布式安装是指在一台机器上模拟一个小的集群,但是集群中只有一个节点。此时每个 Hadoop 守护进程是一个独立的 Java 进程。

当Hadoop 应用于集群时,不论是伪分布式或者真正的分布式,都需要通过配置文件对各组件的协同工作进行设置。

Hadoop v3.1.2 伪分布式安装(Pseudo-Distributed Operation)

Hadoop 伪分布式的特点:

具备Hadoop所有的功能,在单机模拟Hadoop分布式环境。

把nameNode,dataNode 安装在同一个节点上,还需要装一个MapReduce的运行环境yarn。需要配置如下内容:

(1)HDFS:主节点:nameNode;数据节点:dataNode;

(2)yarn:是一个容器,用来运行MapReduce程序;类似jsp需要运行在tomcat容器一样。yarn也有两部分:

主节点:ReourceManager

从节点:NodeManager

修改配置文件

(1)etc/hadoop/core-site.xml - Hadoop core的配置项

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://localhost:9000</value>

</property>

</configuration>

其中指定HDFS 的地址和端口号,端口号按照官方文档设置为9000即可。

Hadoop v3.1.2 伪分布式安装(Pseudo-Distributed Operation)

(2)etc/hadoop/hdfs-site.xml - Hadoop 守护进程的配置项

<configuration>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

</configuration>

因为这里采用伪分布式,集群中只有一个节点,因此副本数量replication 的值也只能设置为1。

Hadoop v3.1.2 伪分布式安装(Pseudo-Distributed Operation)

配置免密码的 ssh

现在,检查你是否可以 ssh 登录到本机而无需密码:

$ ssh localhost

Hadoop v3.1.2 伪分布式安装(Pseudo-Distributed Operation)

如果无法免密登录,请执行如下命令:

$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

$ chmod 0600 ~/.ssh/authorized_keys

执行 Execution

执行后续命令以本地运行一个 MapReduce 作业。

(1)格式化文件系统:

$ bin/hdfs namenode -format

Hadoop v3.1.2 伪分布式安装(Pseudo-Distributed Operation)

(2)启动 NameNode 守护进程和 DataNode 守护进程:

$ sbin/start-dfs.sh

Hadoop 守护进程的日志输出目录是 $HADOOP_LOG_DIR,其默认值是 $HADOOP_HOME/logs。

如果输出如下错误信息:

ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.

Hadoop v3.1.2 伪分布式安装(Pseudo-Distributed Operation)

解决办法是在etc/hadoop/hadoop-env.sh 配置文件最后,添加如下信息:

# 添加如下环境变量

export HDFS_DATANODE_USER=root

export HDFS_NAMENODE_USER=root

export HDFS_SECONDARYNAMENODE_USER=root

export YARN_RESOURCEMANAGER_USER=root

export YARN_NODEMANAGER_USER=root

再次运行 sbin/start-dfs.sh,结果如下:

Hadoop v3.1.2 伪分布式安装(Pseudo-Distributed Operation)

(3)浏览 NameNode 的网页,地址默认是:

NameNode - http://localhost:9870/

注意:Hadoop3 HDFS web端口改为9870(Hadoop 3.1.0版本后,50070端口 -> 9870端口了)。

如下是访问HDFS 文件系统的web页面,其中IP 地址为名称节点的IP。

Hadoop v3.1.2 伪分布式安装(Pseudo-Distributed Operation)

通过该Web 界面,可以查看当前文件系统中各个节点的分布信息,浏览名称节点(namenode)上的存储、登录日志等等。

还可以通过Web 界面查看目录,如下图所示。

Hadoop v3.1.2 伪分布式安装(Pseudo-Distributed Operation)

(4)创建运行 MapReduce 作业必需的 HDFS 目录:

$ bin/hdfs dfs -mkdir /user

$ bin/hdfs dfs -mkdir /user/<username>

Hadoop v3.1.2 伪分布式安装(Pseudo-Distributed Operation)

(5)复制输入文件到分布式文件系统中:

$ bin/hdfs dfs -mkdir input

$ bin/hdfs dfs -put etc/hadoop/*.xml input

Hadoop v3.1.2 伪分布式安装(Pseudo-Distributed Operation)

如下是创建好的HFDS 目录,可以通过如下命令进行查询。

bin/hdfs dfs -ls

bin/hdfs dfs -ls /

Hadoop v3.1.2 伪分布式安装(Pseudo-Distributed Operation)

(6)运行提供的示例程序:

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

Hadoop v3.1.2 伪分布式安装(Pseudo-Distributed Operation)

(7)从分布式文件系统中复制文件到本地文件系统,验证输出的结果:

$ bin/hdfs dfs -get output output

$ cat output/*

或者直接查看分布式文件系统的输出文件:

$ bin/hdfs dfs -cat output/*

Hadoop v3.1.2 伪分布式安装(Pseudo-Distributed Operation)

(8)完成以上步骤后,执行一下命令来停止所有的守护进程:

$ sbin/stop-dfs.sh

单机运行 Yarn

在伪分布式模式中,只需设定很少的参数,你就可以用 Yarn 运行一个 MapReduce 作业,并激活 ResourceManager 守护进程和 NodeManager 守护进程。

后续指令假定上述指令的第 1 ~ 4 步已被执行。

(1)设置如下配置参数:etc/hadoop/mapred-site.xml

<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

</configuration>

Hadoop v3.1.2 伪分布式安装(Pseudo-Distributed Operation)

etc/hadoop/yarn-site.xml

<configuration>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

</configuration>

Hadoop v3.1.2 伪分布式安装(Pseudo-Distributed Operation)

(2)启动 ResourceManager 守护进程和 NodeManager 守护进程:

$ sbin/start-yarn.sh

Hadoop v3.1.2 伪分布式安装(Pseudo-Distributed Operation)

(3)浏览 ResourceManager 的网页,地址默认是:

ResourceManager - http://localhost:8088/

访问群集的所有应用程序的默认端口号为8088。

Hadoop v3.1.2 伪分布式安装(Pseudo-Distributed Operation)

(4)运行一个 MapReduce 作业。

(5)完成以上步骤后,执行一下命令来停止所有的守护进程:

$ sbin/stop-yarn.sh

相关推荐