hadoop完全分布式部署

软件版本

虚拟机管理软件:VMware WorkStation Pro 12.0
操作系统:CentOS 6.7
Hadoop:Hadoop 2.7.4
JDK:jdk-8u65-linux-x64.tar.gz

一、环境准备
1、 修改各个节点主机名:vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=node1

2、修改主机名和IP的映射关系:vi /etc/hosts

192.168.66.201 node1
192.168.66.202 node2
192.168.66.203 node3

3、设置ssh免密登录

在node1上执行:ssh-keygen -t rsa  (四个回车),生成公钥和私钥
将公钥拷贝到要免密登陆的目标节点上

 --    ssh-copy-id node2

 --    ssh-copy-id node3

注意:生成的密钥在目录:/root/.ssh
4、查看防火墙状态(必须处于关闭状态)

查看防火墙状态:service iptables status

关闭防火墙:service iptables stop

查看防火墙开机启动状态 :chkconfig iptables --list

关闭防火墙开机启动 :chkconfig iptables off
5、JDK 环境安装

a、递归创建目录

mkdir -p /export/server
mkdir -p /export/data

b、上传jdk安装包:jdk-8u65-linux-x64.tar.gz

c、tar -zxvf jdk-8u65-linux-x64.tar.gz -C /export/server/

d、配置环境变量:vi /etc/profile

export JAVA_HOME=/export/server/jdk1.8.0_65
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

e、刷新配置文件:source /etc/profile(暂时可不操作)

6、系统时间同步(两种方式)

第一种:手动同步

a、安装ntp服务器:yum -y install ntpdate

b、各节点执行:ntpdate cn.pool.ntp.org

第二种:使用NameNode当作服务器

a、安装ntp服务器:yum -y install ntpdate

b、在node1上与网络服务器同步:ntpdate cn.pool.ntp.org

c、DateName节点上开启ntp服务:service ntpd start

d、各节点同步Namenode服务器时间:ntpdate node1
二、Hadoop 集群安装

提示:hadoop的核心配置文件,有默认的配置文件core-default.xml、hdfs-default.xml、mapred-default.xml、yarn-default.xml
core-default.xml,且与对应在目录/export/server/hadoop-2.7.4/etc/hadoop下的配置文件功能相同,但是目录/export/server/hadoop-2.7.4/etc/hadoop下的配置文件配置的属性优先级更高,Hadoop集群启动时优先读取,如果在core-site.xml里没有配置属性,则自动读取默认配置文件里的属性的值。
1、安装Hadoop

a、上传Hadoop安装包到/export/server:hadoop-2.7.4-with-centos-6.7.tar.gz

b、当前目录解压:tar -zxvf hadoop-2.7.4-with-centos-6.7.tar.gz

hadoop-2.7.4-with-centos-6.7.tar.gz解压后目录结构如下:

bin:Hadoop 最基本的管理脚本和使用脚本的目录,这些脚本是 sbin 目录下管理脚本的基础实现,用户可以直接使用这些脚本管理和使用Hadoop
etc:Hadoop配置文件所在的目录,包括core-site,xml、hdfs-site.xml、 mapred-site.xml 等从 Hadoop1.0 继承而来的配置文件和 yarn-site.xml 等 Hadoop2.0新增的配置文件
include:对外提供的编程库头文件(具体动态库和静态库在lib目录中),这些头文件均是用C++定义的,通常用于C++程序访问HDFS或者编写MapReduce 程序
lib:该目录包含了Hadoop对外提供的编程动态库和静态库,与include目录中的头文件结合使用
libexec:各个服务对用的shell配置文件所在的目录,可用于配置日志输出、启动参数(比如JVM参数)等基本信息
sbin:Hadoop管理脚本所在的目录,主要包含HDFS和YARN中各类服务的启动/关闭脚本
share:Hadoop各个模块编译后的jar包所在的目录
2、Hadoop 配置文件修改
a、vi hadoop-env.sh

export JAVA_HOME=/export/server/jdk1.8.0_65

解释:Hadoop运行时依赖JDK的环境,JAVA_HOME是必须设置的。且需要在配置文件hadoop-env.sh中指定JDK安装目录,因为Hadoop 即使是在本机上执行,它也是把当前的执行环境当成远程服务器,也就是说之前系统环境变量对Haddop来说时无效的。
b、vi core-site.xml

fs.defaultFS hdfs://node1:9000 hadoop.tmp.dir /export/data/hadoop

c、vi hdfs-site.xml

dfs.replication 2 dfs.namenode.secondary.http-address 192.168.66.202:50090

d、vi mapred-site.xml

第一步:cp mapred-site.xml.template mapred-site.xml

第二步:vi mapred-site.xml

mapreduce.framework.name yarn

解释:目录/export/server/hadoop-2.7.4/etc/hadoop没有mapred-site.xml,但提供了一个mapred-site.xml.template,因此只需要拷贝一份模板配置文件,并修改成mapred-site.xml即可。
e、vi yarn-site.xml

yarn.resourcemanager.hostname node1 yarn.nodemanager.aux-services mapreduce_shuffle

f、vi slaves

node1
node2
node3

slaves文件里面记录的是集群主机名,一般有以下两种作用:

第一种:配合一键启动脚本如start-dfs.sh、stop-yarn.sh用来进行集群启动。这时候slaves文件里面的主机标记的就是从节点角色所在的机器。

第二种:可以配合hdfs-site.xml里面dfs.hosts属性形成一种白名单机制,配置如下:

<!-- dfs.hosts指定一个文件 --> dfs.hosts <!-- 必须指定文件的完整路径名允许连接到NameNode的主机列表,如果值为空,则允许所有主机 --> /export/server/hadoop-2.7.4/etc/hadoop/slaves

g、Hadoop 环境变量

配置环境变量:vi /etc/profile

export HADOOP_HOME=/export/server/hadoop-2.7.4
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

刷新配置文件: source /etc/profile(暂时可不操作)

h、拷贝Hadoop 解压包及系统配置文件profile到其他节点所在主机,即node2、node3

scp –r /export/server/hadoop-2.7.4 root@node2:/export/server

scp –r /export/server/hadoop-2.7.4 root@node3:/export/server

scp –r /etc/profile root@node2:/etc

scp –r /etc/profile root@node3:/etc

各节点所在主机刷新配置文件:source /etc/profile(必须操作)
三、Hadoop 集群启动

首次启动HDFS时,必须对其进行格式化操作。本质上是一些清理和准备工作,因为此时的HDFS在物理上还是不存在的

格式化命令:hdfs namenode –format(hadoop namenode –format已过时)
1、单节点逐个启动

主节点上启动HDFS NameNode:hadoop-daemon.sh start namenode

各从节点上启动HDFS DataNode:hadoop-daemon.sh start datanode

主节点上启动YARN ResourceManager:yarn-daemon.sh start resourcemanager

各从节点上启动YARN nodemanager:yarn-daemon.sh start nodemanager

提示:$HADOOP_PREFIX/sbin/目录下。如果想要停止某个节点上某个角色,只需要把命令中的start改为stop即可
2、脚本一键启动

启动HDFS集群:$HADOOP_PREFIX/sbin/start-dfs.sh

启动YARN集群: $HADOOP_PREFIX/sbin/start-yarn.sh

同时启动HDFS、YARN集群:$HADOOP_PREFIX/sbin/stop-yarn.sh(不推荐,仍可使用)

停止HDFS集群:$HADOOP_PREFIX/sbin/stop-dfs.sh、stop-yarn.sh

停止YARN集群:$HADOOP_PREFIX/sbin/stop-yarn.sh

过时的脚本:stop-all.sh(不可使用)
3、访问集群 web-ui

一旦Hadoop集群启动并运行,可以通过web-ui进行集群查看,如下所述:

NameNode http://nn_host:port/ 默认50070

访问URL:http:node1:50070或者http:192.169.66.201:50070

ResourceManager http://rm_host:port/ 默认 8088

访问URL:http:node1:8088或者http:192.169.66.201:8088

提示:需要配置本地主机名和IP的映射关系,才能使用NameNode http://nn_host:port/ 形式访问

192.168.66.201 node1
192.168.66.202 node2
192.168.66.203 node3

提示:使用命令验证集群是否正常启动:jps,需要关注各节点的职责、身份

27408 NameNode
28218 Jps
27643 SecondaryNameNode
28066 NodeManager
27803 ResourceManager
27512 DataNode

四、操作HDFS常用的Shell命令介绍
1、显示文件、目录信息:ls

用法:hadoop fs -ls [-d] [-h] [-R]

-d:目录列为纯文件

-h:以人类可读的方式格式化文件大小

-R:递归列出遇到的子目录

例子:hadoop fs -ls -R /user/hive/warehouse/
2、创建目录:mkdir

用法:hadoop fs -mkdir [-p]

-p:递归创建目录

例子:hadoop fs -mkdir /user/hadoop/dir1
3、上传文件:put

功能:将单个src或多个srcs从本地文件系统复制到目标文件系统

用法:hadoop fs -put [-f] [-p] [ localsrc2. ]

-p:保留访问和修改时间,所有权和权限。(假设权限可以跨文件系统传播)

-f:覆盖目标(如果已存在)

例子:

hadoop fs -put localfile /user/hadoop/hadoopfile

hadoop fs -D dfs.replication=1 -put localfile /user/hadoop/hadoopfile        上传文件的同时指定副本数为1

4、下载文件:get

功能:将文件复制到本地文件系统

用法:hadoop fs -get [-p]

-p:保留访问和修改时间,所有权和权限。(假设权限可以跨文件系统传播)
-f:覆盖目标(如果已存在)

例子:hadoop fs -get hdfs://node1:9000/wordcount/input/wordcount.log

注意:hadoop fs -get hdfs://node1:9000/wordcount/input/ wordcount.log 这种形式是先创建wordcount.log目录,再将wordcount.log文件上传到wordcount.log目录下
5、追加文件内容:-appendToFile

功能:将单个src或多个srcs从本地文件系统附加到目标文件系统的末尾

用法:hadoop fs -appendToFile ...

例子:hadoop fs -appendToFile localfile1 localfile2 /user/hadoop/hadoopfile
6、查看文件内容:cat

功能:显示文件内容到stdout

用法:hadoop fs -cat URI [URI ...]

例子:hadoop fs -cat localfile /user/hadoop/hadoopfile
7、跟追日志:tail

功能:显示文件的最后一千字节到stdout

用法:hadoop fs -tail [-f] URI

-f:持续输出文件增加的数据信息

例子:hadoop fs -tail /hadoop/hadoopfile
8、拷贝文件到本地:copyToLocal

功能:复制HDFS系统文件到本地文件系统中,与get命令类似,但目标只能是本地文件

用法:hadoop fs -copyToLocal [-ignorecrc] [-crc] URI

例子:hadoop fs -copyToLocal /dim_time_dat.txt /root/data/
9、拷贝文件到HDFS:copyFromLocal

功能:复制本地系统文件到HDFS文件系统中,与put命令类似,但源文件只能是本地文件

用法:hadoop fs -copyFromLocal URI

-p:保留访问和修改时间,所有权和权限。(假设权限可以跨文件系统传播)
-f:覆盖目标(如果已存在)

例子:hadoop fs -copyFromLocal -f dim_time_dat.txt /
10、拷贝文件(同系统中):cp

功能:将文件从源复制到目标。此命令也允许多个源,在这种情况下,目标必须是目录

用法:hadoop fs -cp [-f] [-p | -p URI [URI ...]

-p:如果目标已存在,则-f选项将覆盖目标

例子:hadoop fs -cp -f /dim_time_dat.txt /
11、合并文件:getmerge

功能:合并下载多个文件

用法:hadoop fs -getmerge [-nl]

例子:hadoop fs -getmerge -nl /a.txt /b.txt /c.txt
12、删除文件、目录:rm

功能:删除指定的文件。只删除非空目录和文件。

用法:hadoop fs -rm [-f] [-r | -R] [-skipTrash] URI [URI ...]

-r:选项以递归方式删除目录及其下的任何内容

例子:hadoop fs -rm -r /a.txt /b.txt /c.txt
13、修改HDFS文件的副本数:setrep

功能:改变一个文件的副本系数;如果path是目录,则命令以递归方式更改以path为根的目录树下的所有文件的复制因子

用法:hadoop fs -setrep [-R] [-w]

-w:标志请求命令等待复制完成。这可能需要很长时间

-R :选项用于递归改变目录下所有文件的副本系数

例子:hadoop fs -setrep -w 3 /dim_time_dat.txt

hadoop fsck -locations:查看当前hdfs的副本数
14、查看HDFS文件系统可用空间:df

用法:hadoop fs -df [-h] URI [URI ...]

例子:hadoop fs -df -h /
15、显示文件大小:du

用法:hadoop fs -du [-s] [-h] URI [URI ...]

-s选项将导致显示文件长度的汇总摘要,而不是单个文件。
-h选项将以“人类可读”的方式格式化文件大小(例如64.0m而不是67108864)

例子:hadoop fs -du -s /dim_time_dat.txt
五:格式化HDFS文件系统

前提条件:关闭HDFS集群、YARN集群(否则格式化不成功)

1、删除所有节点的数据目录

rm -rf /export/data/hadoop

2、删除所有节点的日志文件

rm -rf /export/server/hadoop-2.7.4/logs/*

3、在node1节点上,重新格式化

hdfs namenode -format

作者:jinYwuM
来源:CSDN
原文:https://blog.csdn.net/jinYwuM/article/details/81210353
版权声明:本文为博主原创文章,转载请附上博文链接!

posted @ 2022-02-18 14:00  中國颜值的半壁江山  阅读(104)  评论(0编辑  收藏  举报