hadoop平台搭建(四)-伪分布式的配置及运行

hadoop平台搭建(4)--伪分布式的配置及运行

摘要:本文主要讲述Linux环境下搭建hadoop平台过程中,基于hadoop单机模式运行正确的基础上,配置hadoop的伪分布式模式,并在配置完毕的基础上运行hadoop的伪分布式实例。

环境说明:文章延续hadoop平台搭建(3)中的步骤,因为只涉及hadoop自身配置文件的修改,所以操作步骤适用于所有版本的Linux系统。

       Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode。(注意,伪分布式读取的是 分布式文件系统hdfs 中的文件。)
       Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。(注意,在比较老的版本比如hadoop1.x中,没有core-site.xml文件,需要做相应调整)

1修改配置文件core-site.xml、hdfs-site.xml

打开core-site.xml文件

命令:sudo gedit ./etx/hadoop/core-site.xml
hadoop平台搭建(四)-伪分布式的配置及运行
hadoop平台搭建(四)-伪分布式的配置及运行

将文件内容修改为如下:

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/home/hadoop/develop/hadoop/myhadooptemp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

       其中,hadoop.tmp.dir属性表示hadoop的临时目录,可以自定义;若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。fs.defaultFS表示提供HDFS服务的主机名和端口号

打开hdfs-site.xml文件

命令:sudo gedit ./etc/hadoop/hdfs-site.xml
hadoop平台搭建(四)-伪分布式的配置及运行

将文件内容修改为如下

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/home/hadoop/develop/hadoop/myhadooptemp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/hadoop/develop/hadoop/myhadooptemp/dfs/data</value>
    </property>
</configuration>

       其中,dfs.replication表示HDFS中同一份文件的数目,表示有value-1份冗余。dfs.namenode.name.dir配置namenode的元数据存放的本地文件系统路径,dfs.datanode.data.dir设置datanode存放数据的本地文件系统路径。

       注意:Hadoop 的运行方式是由配置文件决定的(运行 Hadoop 时会读取配置文件),因此如果需要从伪分布式模式切换回非分布式模式,需要删除 core-site.xml 中的配置项。

2执行NameNode的格式化命令

命令:./bin/hdfs namenode -format
hadoop平台搭建(四)-伪分布式的配置及运行
注意,因为已经配置好hadoop的环境变量,所以可以不进入bin目录直接调用bin目录下的工具

格式化成功后,会有如下输入结果
hadoop平台搭建(四)-伪分布式的配置及运行
此外,格式化成功后,会根据配置文件,生成相应的目录
hadoop平台搭建(四)-伪分布式的配置及运行

3运行伪分布式实例

开启NameNode 和 DataNode 守护进程

命令:./sbin/start-dfs.sh
注意:start-dfs.sh是个完整的可执行脚本,中间没有空格。

       启动完成后,用jdk的jps命令查看进程启动是否成功,若成功启动则会列出如下进程: “NameNode”、”DataNode” 和 “SecondaryNameNode”
hadoop平台搭建(四)-伪分布式的配置及运行

(1)如果 SecondaryNameNode 没有启动,执行如下操作
命令:sbin/stop-dfs.sh         #关闭进程
命令:sbin/start-dfs.sh       #尝试再次启动

(2)若是 DataNode 没有启动,可尝试执行如下操作
命令:./sbin/stop-dfs.sh      # 关闭进程
命令:rm -r ./tmp                # 删除 tmp 文件,注意这会删除 HDFS 中原有的所有数据
命令:./bin/hdfs namenode -format # 重新格式化 NameNode
命令:./sbin/start-dfs.sh # 重启

       成功启动后,可以访问 Web 界面localhost:50070 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件
hadoop平台搭建(四)-伪分布式的配置及运行

hadoop平台搭建(四)-伪分布式的配置及运行

      单机模式中,读取的是本地的数据;伪分布式模式中,读取的是HDFS上的数据。要使用HDFS数据,首先在HDFS上创建用户目录

命令:hdfs dfs -mkdir -p ./HDFS      #创建hdfs格式的输入输出根目录HDFS
命令:hdfs dfs -mkdir -p ./HDFS/input#在HDFS目录下创建hdfs文件类型的输入目录

      注意,使用hdfs dfs -mkdir <新目录名> 命令时,默认创建HDFS类型的/user/<用户名> 目录,并将此目录作为当前的HDFS型默认父目录,即便当前路径是hadoop安装根目录或其它,一律创建目录/user/<用户名>/<新目录名>。若想在hadoop安装根目录下创建HDFS文,则创建或调用时必须给出完整路径名,如:

hdfs dfs -mkdir -p /home/hadoop/develop/hadoop/HDFS
hdfs dfs -ls -R /home/hadoop/develop/hadoop

hadoop平台搭建(四)-伪分布式的配置及运行
      注意,如果此时出现错误Cannot create directory /user/hadoop/HDFS. Name node is in safe mode则表示NameNode节点处于安全模式,需要关闭安全模式,执行如下命令

命令:hadoop dfsadmin -safemode leave
解读:关闭安全模式

      在此,我们选择系统为HDFS文件提供的默认根路径,在根路径下创建输入目录input。在根目录下,统一删除HDFS型目录,重新创建HDFS型目录。
hadoop平台搭建(四)-伪分布式的配置及运行
      向输入目录里添加待处理文件
hadoop平台搭建(四)-伪分布式的配置及运行
注意:再次强调,HDFS类型的默认根目录是user/<用户名>,也是HDFS的默认当前目录。

运行伪分布式实例

命令:./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep ./HDFS/input ./HDFS/output 'du[a-z.+]'
hadoop平台搭建(四)-伪分布式的配置及运行

执行无误后会有如下输出
hadoop平台搭建(四)-伪分布式的配置及运行

查看输出路径以及输出文件
hadoop平台搭建(四)-伪分布式的配置及运行
注意,由于伪分布式模式更改了配置文件,所以与单机模式运行结果不同

也可以将结果去回到本地,执行命令 hdfs dfs -get <源路径> <目标路径>
hadoop平台搭建(四)-伪分布式的配置及运行

无论是单机模式还是伪分布式模式,运行之前输出路径不能存在,所以运行结束后先删除输出路径,避免出错
hadoop平台搭建(四)-伪分布式的配置及运行

如果需要关闭hadoop则运行如下命令

./sbin/stop-dfs.sh
hadoop平台搭建(四)-伪分布式的配置及运行

下次启动 hadoop 时,无需进行 NameNode 的初始化,只需要运行 ./sbin/start-dfs.sh 就可以

再次强调:Hadoop 的运行方式是由配置文件决定的(运行 Hadoop 时会读取配置文件),因此如果需要从伪分布式模式切换回非分布式模式,需要删除 core-site.xml 中的配置项