Hadoop笔记——Hadoop集群安装与部署

文章目录

    • 一、Hadoop安装
        • (一)两种主流Hadoop版本
        • (二)环境准备
        • (三)Hadoop安装步骤
    • 二、Hadoop的三种运行模式
        • (一)本地运行模式
        • (二)伪分布式运行模式
        • (三)完全分布式运行模式
    • 三、Hadoop的监控

一、Hadoop安装


(一)两种主流Hadoop版本

  • Apache版
    Apache公司发布的基础版本。
    下载地址:https://archive.apache.org/dist/hadoop/common/
  • CDH版
    Cloudera公司发布的版本,版本管理清晰,兼容性好,大型互联网公司使用较多。
    下载地址:https://www.cloudera.com/downloads/cdh/5-10-0.html

(二)环境准备

  • 关闭防火墙#chkconfig [--level 运行级别] iptables off
  • 准备Hadoop安装包
  • 编辑/etc/sysconfig/network修改集群每个主机的主机名
  • 配置静态ip
  • 编辑/etc/hosts文件,添加每台主机的地址映射
  • 安装JDK并配置java环境变量

(注意:配置完全分布式的Hadoop集群时,应当先准备集群分发脚本xsync和ssh免密登录)

(三)Hadoop安装步骤

  1. 将准备好的Hadoop安装包解压到Linux
  2. 配置Hadoop环境变量
    编辑/etc/profile文件,在末尾添加
HADOOP_HOME=路径
PATH=$HADOOP_HOME/bin:$PATH
export HADOOP_HOME PATH

然后:

source /etc/profile

二、Hadoop的三种运行模式


(一)本地运行模式

Standalone Operation
By default, Hadoop is configured to run in a non-distributed mode, as a single Java process. This is useful for debugging.

本地模式是在Linux的文件系统上执行程序。

  • 测试官方Grep案例:
  $ 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/*
  • 测试官方WordCount案例:
  $ mkdir wcinput
  $ cd wcinput
  $ touch wc.input

编辑wc.input文件,随意输入几个单词,然后运行案例并查看结果:

  $ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar wordcount wcinput wcoutput
  $ cat wcoutput/*

(二)伪分布式运行模式

Pseudo-Distributed Operation
Hadoop can also be run on a single-node in a pseudo-distributed mode where each Hadoop daemon runs in a separate Java process.

伪分布式模式是在Hadoop的HDFS文件系统上执行程序。因此采用伪分布式运行模式需要修改Hadoop的配置文件,包括:

  • etc/hadoop/core-site.xml
<!-- 指定HDFS中NameNode的地址 -->

fs.defaultFS</name>
    hdfs://Hadoop01:9000</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录,不改也能运行 -->

	hadoop.tmp.dir</name>
	/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
  • etc/hadoop/hdfs-site.xml
<!-- 指定HDFS副本的数量,默认为3,伪分布式只有一台主机,因此改为1 -->

	dfs.replication</name>
	1</value>
</property>
  • etc/hadoop/hadoop-env.sh
# When running a distributed configuration it is best to
# set JAVA_HOME in this file, so that it is correctly defined on
# remote nodes.
export JAVA_HOME=JAVA_HOME绝对路径

启动集群步骤:

  • 格式化NameNode
    (第一次启动时格式化,每次格式化会产生新的集群id并清空本机数据和日志,为了避免与其他节点DataNode冲突,格式化前必须清除所有data和logs文件数据)
  $ bin/hdfs namenode -format
  • 启动NameNode
  $ sbin/hadoop-daemon.sh start namenode
  • 启动DataNode
  $ sbin/hadoop-daemon.sh start datanode

启动集群后查看java进程:

  $ jps
3720 Jps
3640 DataNode
3545 NameNode

(三)完全分布式运行模式

完全分布式的集群最少需要三台主机,以下面表格为例:

主机 Hadoop01 Hadoop02 Hadoop03
HDFS NameNode、DataNode DataNode SecondaryNameNode、DataNode
YARN NodeManager ResourceManager、NodeManager NodeManager

注意:NameNodeResourceManagerResourceManager不要在相同主机上。

完全分布式的集群配置与前面伪分布式的配置基本一致,需要增加的SecondaryNameNode的主机地址配置并修改副本数:

  • etc/hadoop/hdfs-site.xml
<!-- 指定HDFS副本的数量,默认为3 -->

	dfs.replication</name>
	3</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->

      dfs.namenode.secondary.http-address</name>
      hadoop03:50090</value>
</property>

然后使用集群分发脚本xsync,将相应的软件和配置文件分发到其他主机即可。

完全分布式集群的启动:

  1. 单点启动
    单点启动就是一个一个地启动NameNode、DataNode等进程,启动的指令与伪分布式模式一致,按照前面的表格启动三台主机对应的HDFS进程即可。
  2. 群起集群
    群起集群就是在一台主机上(NameNode所在主机)用一个命令就能启动整个集群,需要配置:etc/hadoop/slaves文件,增加集群所有主机名:
Hadoop01
Hadoop02
Hadoop03

然后使用xsyncslaves文件分发到所有主机。
群起集群的指令:

  # 如果第一次启动,格式化NameNode
  $ hdfs namenode -format
  
  # 启动HDFS
  $ sbin/start-dfs.sh

启动Hadoop集群后,实际启动的是HDFS分布式文件系统,为了测试集群,可以在HDFS文件系统上测试创建、删除文件等操作
还可以启动Yarn并测试MR程序

三、Hadoop的监控


HDFS-web:http://主机地址:50070/dfshealth.html#tab-overview 查看HDFS文件系统、集群的状态等。

你可能感兴趣的:(Hadoop,hadoop,分布式,大数据)