Hadoop搭建集群

一、什么是Hadoop?

hadoop中有3个核心组件: 分布式文件系统:HDFS —— 实现将文件分布式存储在很多的服务器上 HDFS 采用Master/Slave的架构来存储数据,这种架构主要由四个部分组成,分别为HDFS Client、NameNode、DataNode和Secondary NameNode。下面我们分别介绍这四个组成部分。

Client:就是客户端。

   1、文件切分。文件上传 HDFS 的时候,Client 将文件切分成 一个一个的Block,然后进行存储。

   2、与 NameNode 交互,获取文件的位置信息。

   3、与 DataNode 交互,读取或者写入数据。

   4、Client 提供一些命令来管理 HDFS,比如启动或者关闭HDFS。

   5、Client 可以通过一些命令来访问 HDFS。
复制代码

NameNode:就是 master,它是一个主管、管理者。

   1、管理 HDFS 的名称空间。

   2、管理数据块(Block)映射信息

   3、配置副本策略

   4、处理客户端读写请求。
复制代码

DataNode:就是Slave。NameNode 下达命令,DataNode 执行实际的操作。

   1、存储实际的数据块。

   2、执行数据块的读/写操作。
复制代码

Secondary NameNode:并非 NameNode 的热备。当NameNode 挂掉的时候,它并不能马上替换 NameNode 并提供服务。

   1、辅助 NameNode,分担其工作量。

   2、定期合并 fsimage和fsedits,并推送给NameNode。

   3、在紧急情况下,可辅助恢复 NameNode。
复制代码

分布式运算编程框架:MAPREDUCE —— 实现在很多机器上分布式并行运算

MapReduce编程主要组件

InputFormat类:分割成多个splits和每行怎么解析。

Mapper类:对输入的每对<key,value>生成中间结果。

Combiner类:在map端,对相同的key进行合并。

Partitioner类:在shuffle过程中,将按照key值将中间结果分为R份,每一份都由一个reduce去完成。

Reducer类:对所有的map中间结果,进行合并。

OutputFormat类:负责输出结果格式。

分布式资源调度平台:YARN —— 帮用户调度大量的mapreduce程序,并合理分配运算资源

二、hdfs集群组成结构:

三、安装hdfs集群的具体步骤:

一、首先需要准备N台linux服务器

先准备4台虚拟机:1个namenode节点 + 3 个datanode 节点

二、修改各台机器的主机名和ip地址

主机名:hdp-01 对应的ip地址:192.168.33.61

主机名:hdp-02 对应的ip地址:192.168.33.62

主机名:hdp-03 对应的ip地址:192.168.33.63

主机名:hdp-04 对应的ip地址:192.168.33.64

在windows中将各台linux机器的主机名配置到的windows的本地域名映射文件中: 192.168.33.61 hdp-01

192.168.33.62 hdp-02

192.168.33.63 hdp-03

192.168.33.64 hdp-04

配置linux服务器的基础软件环境

防火墙

//临时关闭 systemctl stop firewalld //禁止开机启动 systemctl disable firewalld

systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
复制代码

安装jdk:(hadoop体系中的各软件都是java开发的)

1)利用alt+p 打开sftp窗口,然后将jdk压缩包拖入sftp窗口

2)然后在linux中将jdk压缩包解压到/root/apps 下

3)配置环境变量:JAVA_HOME PATH

vi /etc/profile 在文件的最后,加入:

export JAVA_HOME=/root/apps/jdk1.8.0_60

export PATH=$PATH:$JAVA_HOME/bin
复制代码

4)修改完成后,记得 source /etc/profile使配置生效

5)检验:在任意目录下输入命令: java -version 看是否成功执行

6)将安装好的jdk目录用scp命令拷贝到其他机器

7)将/etc/profile配置文件也用scp命令拷贝到其他机器并分别执行source命令

集群内主机的域名映射配置

在hdp-01上,vi /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.33.61 hdp-01

192.168.33.62 hdp-02

192.168.33.63 hdp-03

192.168.33.64 hdp-04

然后,将hosts文件拷贝到集群中的所有其他机器上

四、安装hdfs集群

1) 修改hadoop-env.sh

export JAVA_HOME=/root/apps/jdk1.8.0_60

2) 修改core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hdp-01:9000</value>
</property>
</configuration>
复制代码

3) 修改hdfs-site.xml

<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/root/dfs/name</value>
</property>

<property>
<name>dfs.datanode.data.dir</name>
<value>/root/dfs/data</value>
</property>
</configuration>
复制代码

4) 拷贝整个hadoop安装目录到其他机器

scp -r /root/apps/hadoop-2.8.0  hdp-02:/root/apps/
scp -r /root/apps/hadoop-2.8.0  hdp-03:/root/apps/
scp -r /root/apps/hadoop-2.8.0  hdp-04:/root/apps/
复制代码

5) 启动HDFS

要点提示: 要运行hadoop的命令,需要在linux环境中配置HADOOP_HOME和PATH环境变量

vi /etc/profile
export JAVA_HOME=/root/apps/jdk1.8.0_60
export HADOOP_HOME=/root/apps/hadoop-2.8.0
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
复制代码

首先,初始化namenode的元数据目录

要在hdp-01上执行hadoop的一个命令来初始化namenode的元数据存储目录

hadoop namenode -format

1.创建一个全新的元数据存储目录

2.生成记录元数据的文件fsimage

3.生成集群的相关标识:如:集群id——clusterID

然后,启动namenode进程(在hdp-01上)

hadoop-daemon.sh start namenode

启动完后,首先用jps查看一下namenode的进程是否存在

然后,在windows中用浏览器访问namenode提供的web端口:50070

http://hdp-01:50070(不能打开中文输入法)

然后,启动众datanode们(在任意地方)

hadoop-daemon.sh start datanode

6) 用自动批量启动脚本来启动HDFS

1)先配置hdp-01到集群中所有机器(包含自己)的免密登陆

2)配完免密后,可以执行一次 ssh 0.0.0.0

3)修改hadoop安装目录中/etc/hadoop/slaves(把需要启动datanode进程的节点列入)

hdp-01
hdp-02
hdp-03
hdp-04
复制代码

4)在hdp-01上用脚本:start-dfs.sh 来自动启动整个集群

5)如果要停止,则用脚本:stop-dfs.sh

namenode的职责:

  • 1.维护元数据信息。
  • 2.管理hdfs的目录数
  • 3.响应客户端的请求。

五、HDFS中的shell操作

命令格式:hadoop fs -ls 文件路径

HDFS中的shell操作命令

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值