从零开始搭建Hadoop框架(单机模式)

准备工作

MasterSlave1中都要安装Hadoop,在这我们以Master为例,Slave1类似
1).Hadoop 简介
Hadoop是一个开源的可运行于大规模集群上的分布式并行编程框架,其最核心的设计包括:MapReduce 和 HDFS。基于 Hadoop,你可以轻松地编写可处理海量数据的分布式并行程序,并将其运行于由成百上千个结点组成的大规模计算机集群上。
HDFS:Hadoop Distributed File System 的缩写,Hadoop中的分布式文件系统,它是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,适合那些有着超大数据集(large data set)的应用程序。
MapReduce:MapReduce是一套从海量·源数据提取分析元素最后返回结果集的编程模型,将文件分布式存储到硬盘是第一步,而从海量数据中提取分析我们需要的内容就是MapReduce做的事了。
官网:http://hadoop.apache.org/
下载Hadoop
这里写图片描述

我下载的是2.7.3版本的Hadoop,当然也可以选择下载别的版本
这里写图片描述

安装Hadoop

将下载的Hadoop压缩文件解压
这里写图片描述
使用如下命令解压

$ sudo tar -zxf hadoop-2.7.3.tar.gz -C /usr/local/

查看 /usr/local/ 目录下是否存在hadoop文件
这里写图片描述

可以看到hadoop文件的所属者及所属组为root,我们更改为hadoop用户的所属者及所属组。只让hadoop用户可以操作hadoop目录及子目录下的所有文件

# chown -hR hadoop /usr/local/hadoop/
# chgrp -hR hadoop /usr/local/hadoop/

这里写图片描述
hadoop解压后即可使用,输入如下命令来检查hadoop是否可用,成功则显示hadoop的版本信息

$ cd /usr/local/hadoop/
$ ./bin/hadoop version

这里写图片描述

配置环境变量

$ vim ~/.bashrc  # 在文件尾部添加如下内容保存退出

# Hadoop Environment Variables
export HADOOP_HOME=/usr/local/hadoop        # hadoop的安装目录
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

最后在PATH中追加Hadoop的环境变量,JDK、Hadoop完成的环境变量如下

# PATH
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

这里写图片描述

$ source ~/.bashrc    
# 重新加载文件,使环境变量立即生效
#查看hadoop是否追到了PATH
#检查Hadoop环境变量是否配置成功
$ echo $PATH
$ hadoop version

这里写图片描述

Hadoop 伪分布式配置

导读:

Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。
Hadoop的伪分布式配置需要设置环境变量,不设置的会报错,伪分布式的配置我们仍然使用主机Master即可,所谓伪分布式就是说主机Master既是NameNode,同时也是DataNode。
NameNode:主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表以及块所在的DataNode等等。故这是一个核心节点。
DataNode:数据节点,每台从服务器节点都运行一个,负责把HDFS数据块读、写到本地文件系统。

配置文件

Hadoop的配置文件位于 /usr/local/hadoop/etc/hadoop(红色部分为Hadoop的安装目录) 中,Hadoop 中的配置文件是xml格式,每个配置以声明 property 的 name 和 value 的方式来实现。
Hadoop 伪分布式配置需要修改两个配置文件:
core-site.xmlhdfs-site.xml
core-site.xml:此文件是Hadoop的核心配置文件
hdfs-site.xml :用于配置NameNode的URI及NameNode和DataNode的存放位置

core-site.xml

configuration节点中添加如下内容
这里写图片描述

这里写图片描述

<configuration>
    <!-- Hadoop 文件系统的临时目录(如果不配置,NameNode和DataNode默认存放在hadoop.tmp.dir目录)-->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <!-- <description>Abase for other temporary directories.</description> -->
    </property>

    <!-- 配置NameNode的URI -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://Master:9000</value>
    </property>
</configuration>

注意:yarn-site.xml配置文件不用修改,默认为localhost,表示服务器即为NameNode,也是DataNode,也就是我们现在做的Hadoop 伪分布式。

hdfs-site.xm

在configuration节点中添加如下内容

<configuration>
    <!-- 设置系统里面的文件块的数据备份个数,默认是3 -->
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <!-- NameNode结点存储hadoop文件系统信息的本地系统路径 -->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    </property>
    <!-- DataNode结点被指定要存储数据的本地文件系统路径,这个值只对NameNode有效,DataNode并不需要使用到它 -->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>
</configuration>

启动Hadoop

注意:在启动之前要关闭防火墙和selinux守护进程,否则可能会报错

$ systemctl status firewalld
$ setenforce 0

配置完成后,执行命令格式化NameNode

$ hdfs namenode -format

成功的话,会看到 successfully formatted 和 “Exitting with status 0” 的提示,若为 Exitting with status 1 则是出错。
这里写图片描述

启动

$ start-dfs.sh

1).开启 NameNodeDataNode 守护进程
启动完成后,可以通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: “NameNode”、”DataNode”和SecondaryNameNode(如果 SecondaryNameNode 没有启动,请运行 stop-dfs.sh 关闭进程,然后再次尝试启动尝试)。如果没有 NameNode 或 DataNode ,那就是配置不成功,请仔细检查之前步骤,或通过查看启动日志排查原因。
这里写图片描述

成功启动后,在浏览起中输入http://Master:50070查看NameNode和DataNode的相关信息,还可以在线查看HDFS中的文件。

这里写图片描述

停止hadoop:$ stop-dfs.sh

有些朋友可能会有疑问,为什么不启动yarn呐,因为我们做的是伪分布式,伪分布式不用启动yarn,一般不会影响程序的执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值