文章目录
一、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安装步骤
- 将准备好的Hadoop安装包解压到Linux
- 配置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的配置文件,包括:
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://Hadoop01:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录,不改也能运行 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
<!-- 指定HDFS副本的数量,默认为3,伪分布式只有一台主机,因此改为1 -->
<property>
<name>dfs.replication</name>
<value>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 |
注意:NameNode
、ResourceManager
和SecondaryNameNode
不要在相同主机上。
完全分布式的集群配置与前面伪分布式的配置基本一致,需要增加的SecondaryNameNode的主机地址配置并修改副本数:
<!-- 指定HDFS副本的数量,默认为3 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop03:50090</value>
</property>
然后使用集群分发脚本xsync,将相应的软件和配置文件分发到其他主机即可。
完全分布式集群的启动:
- 单点启动
单点启动就是一个一个地启动NameNode、DataNode等进程,启动的指令与伪分布式模式一致,按照前面的表格启动三台主机对应的HDFS进程即可。 - 群起集群
群起集群就是在一台主机上(NameNode所在主机)用一个命令就能启动整个集群,需要配置:etc/hadoop/slaves
文件,增加集群所有主机名:
Hadoop01
Hadoop02
Hadoop03
然后使用xsync
将slaves
文件分发到所有主机。
群起集群的指令:
# 如果第一次启动,格式化NameNode
$ hdfs namenode -format
# 启动HDFS
$ sbin/start-dfs.sh
启动Hadoop集群后,实际启动的是HDFS分布式文件系统,为了测试集群,可以在HDFS文件系统上测试创建、删除文件等操作
还可以启动Yarn并测试MR程序
三、Hadoop的监控
HDFS-web:http://主机地址:50070/dfshealth.html#tab-overview 查看HDFS文件系统、集群的状态等。