hadoop搭建

一、hadoop概述
1 hadoop介绍
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。

2核心架构
Hadoop 由许多元素构成。其最底部是 Hadoop Distributed File System(HDFS),它存储 Hadoop 集群中所有存储节点上的文件。HDFS(对于本文)的上一层是MapReduce 引擎,该引擎由 JobTrackers 和 TaskTrackers 组成。通过对Hadoop分布式计算平台最核心的分布式文件系统HDFS、MapReduce处理过程,以及数据仓库工具Hive和分布式数据库Hbase的介绍,基本涵盖了Hadoop分布式平台的所有技术核心。 [4]
HDFS
对外部客户机而言,HDFS就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件,等等。但是 HDFS 的架构是基于一组特定的节点构建的,这是由它自身的特点决定的。这些节点包括 NameNode(仅一个),它在 HDFS 内部提供元数据服务;DataNode,它为 HDFS 提供存储块。由于仅存在一个 NameNode,因此这是 HDFS 的一个缺点(单点失败)。HDFS 内部的所有通信都基于标准的 TCP/IP 协议。
NameNode
NameNode 是一个通常在 HDFS 实例中的单独机器上运行的软件。它负责管理文件系统名称空间和控制外部客户机的访问。NameNode 决定是否将文件映射到 DataNode 上的复制块上。对于最常见的 3 个复制块,第一个复制块存储在同一机架的不同节点上,最后一个复制块存储在不同机架的某个节点上。注意,这里需要您了解集群架构。
NameNode 在一个称为 FsImage 的文件中存储所有关于文件系统名称空间的信息。这个文件和一个包含所有事务的记录文件(这里是 EditLog)将存储在 NameNode 的本地文件系统上。FsImage 和 EditLog 文件也需要复制副本,以防文件损坏或 NameNode 系统丢失。
DataNode
DataNode 也是一个通常在 HDFS实例中的单独机器上运行的软件。Hadoop 集群包含一个 NameNode 和大量 DataNode。DataNode 通常以机架的形式组织,机架通过一个交换机将所有系统连接起来。Hadoop 的一个假设是:机架内部节点之间的传输速度快于机架间节点的传输速度。
DataNode 响应来自 HDFS 客户机的读写请求。它们还响应来自 NameNode 的创建、删除和复制块的命令。NameNode 依赖来自每个 DataNode 的定期心跳(heartbeat)消息。每条消息都包含一个块报告,NameNode 可以根据这个报告验证块映射和其他文件系统元数据。如果 DataNode 不能发送心跳消息,NameNode 将采取修复措施,重新复制在该节点上丢失的块。
文件操作
可见,HDFS 并不是一个万能的文件系统。它的主要目的是支持以流的形式访问写入的大型文件。
如果客户机想将文件写到 HDFS 上,首先需要将该文件缓存到本地的临时存储。如果缓存的数据大于所需的 HDFS 块大小,创建文件的请求将发送给 NameNode。NameNode 将以 DataNode 标识和目标块响应客户机。
同时也通知将要保存文件块副本的 DataNode。当客户机开始将临时文件发送给第一个 DataNode 时,将立即通过管道方式将块内容转发给副本 DataNode。客户机也负责创建保存在相同 HDFS名称空间中的校验和(checksum)文件。
在最后的文件块发送之后,NameNode 将文件创建提交到它的持久化元数据存储(在 EditLog 和 FsImage 文件)。
Linux 集群
Hadoop 框架可在单一的 Linux 平台上使用(开发和调试时),官方提供MiniCluster作为单元测试使用,不过使用存放在机架上的商业服务器才能发挥它的力量。这些机架组成一个 Hadoop 集群。它通过集群拓扑知识决定如何在整个集群中分配作业和文件。Hadoop 假定节点可能失败,因此采用本机方法处理单个计算机甚至所有机架的失败。

二、hadoop安装
(注意本次实验由于第一次遇到错误无法修复,又重新安装了不同版本的软件,所以有些环境变量的值会有不同)
1实验目的
在虚拟机Ubuntu上安装Hadoop单机模式和集群并进行简单测试;
2实验环境
1)虚拟机ubuntu18.04.1
2)Java 1.8.0_181
3)Hadoop.2.9.1
3实验过程
(1)安装ubuntu操作系统

-打开VMware,在Home tab中单击“Create a New Virtual Machine”,
-选择custom,选择虚拟硬件版本Workstation,选择ios文件,next
-录入目标操作系统信息,包括Full name、Uer name和Password, next
-选择默认的选项,一般不做更改,最后确认信息,Finish
-安装成功后,会看到如下画面

在这里插入图片描述
(2)安装配置Samba
安装samba主要为了实现与windows操作系统的通讯,由于server版本的ubuntu没有自带图形操作界面,所以下载资料等操作不太方便,这也是安装samba的目的之一。

Samba介绍:
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源
-安装samba,输入如下命令:
Sudo apt-get install samba
-创建共享目录,并修改权限
Sudo chmod 777 share

-配置samba。修改samba的配置文件/etc/samba/smb.conf ,将security=share,并在文件的末尾追加如下内容
[share]
Path=home/lcc/share
Public=yes
Writable=yes
-测试 在windows实机中,通过ip访问ubuntu虚拟机,可以见到share文件夹
在这里插入图片描述

遇到的问题:
-在安装samba时遇到无法获得锁/var/lib/dpkg/lock-open(11:资源暂时不可用)由以下办法可解决
在这里插入图片描述
-在重启命令时发现 重启的文件是smbd 而不是 samba
-重启之后在此电脑右键添加一个网络映射器, 然后添加之后访问要输入网络凭据
在这里插入图片描述

解决方法是为samba配置用户
-在配置用户时出现
在这里插入图片描述

解决办法:
这是因为没有加相应的系统账号,所以会提示Failed to add entry for user的错误,只需增加相应的系统账号test就可以了:
[root@ubuntu ~]# groupadd test -g 6000
[root@ubuntu ~]# useradd test -u 6000 -g 6000 -s /sbin/nologin -d /dev/null
-在输入网络凭据时 发现在用户名前面要加一个\表示域名
(3)安装配置jdk

-首先,下载java开发工具包JDK。在本次试验中,我们下载的版本是Java 1.8.0_181
在这里插入图片描述
在这里插入图片描述

(4)安装配置hadoop
-添加Hadoop用户并赋予sudo权限
在这里插入图片描述

-安装配置SSH
在这里插入图片描述

-配置密钥,使得hadoop用户能够无须输入密码,通过SSH访问localhost,
-生成一个公钥和私钥对。即id_dsa和id_dsa.pub两个文件,位于~/.ssh中
在这里插入图片描述
-可以在默认目录下看到这两个文件
在这里插入图片描述
-测试结果:
在这里插入图片描述
(5)安装配置hadoop (有些忘记截图)
-首先下载Hadoop,解压缩到/opt/hadoop目录下, 本次试验中我们下载的版本是hadoop-2.9.1.tar.gz,更改目录名称为hadoop
更改根目录
Sudo mv hadoop-2.9.1/hadoop
-将hadoop文件夹的own改为用户hadoop
Sudo chown -R hadoop:hadoop /opt/hadoop

-配置.bashrc文件
配置该文件,需要知道Java的安装路径,可以通过下面的代码查看:
update-alternatives - -config java
-完整的路径为:/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java,我们只取前面的部分 /usr/lib/jvm/java-8-openjdk-amd64
-修改.bashrc文件:在文件末尾追加下面内容
在这里插入图片描述

-执行下面的命令使添加的环境变量生效:
source ~/.bashrc

三、hadoop单机模式测试
为测试Hadoop安装在正确性,我们用hadoop自带的例子WordCount进行测试。
-在hadoop文件下创建input文件夹
  mkdir input
-拷贝 README.txt 到 input 文件夹
  cp README.txt input
-执行WordCount程序实例

在这里插入图片描述
-执行结果
在这里插入图片描述

-Hadoop单机模式安装成功
四、hadoop伪分布式配置及测试

在配置好单机模式的基础上,伪分布式需要修改4个配置文件core-site.xml和hdfs-site.xml。Hadoop的配置文件是xml 格式,每个配置以声明property的name和value的方式来实现。
-解压后,所有的hadoop相关配置文件都可以在/opt/hadoop/conf下找到 下面针对以下四个文件进行配置分别是 hadoop-env.sh hdsf-site.xml mapred-site.xml core-site.xml
-修改配置文件
在这里插入图片描述
-修改hadoop配置文件hadoop-env.sh设置java_home

-修改hadoop配置文件core-site.xml
在hadoop文件夹下建立tmp文件夹
-修改core-site.xml内容
在这里插入图片描述
-修改hadoop配置文件hdfs-site/xml

在这里插入图片描述
-修改hadoop配置文件mapred-site.xml
在这里插入图片描述
-配置完成后,执行 NameNode 的格式化

HDFS主从结构体系
NameNode:主控制服务器,负责维护文件系统的命名空间(Namespace)并协调客户端对文件的访问,记录命名空间内的任何改动或命名空间本身的属性改动
DataNode:负责它们所在的物理节点上的存储管理

-启动namenode和datanode进程
在这里插入图片描述

七、参考url

https://blog.csdn.net/minenamewj/article/details/17356703
https://jingyan.baidu.com/article/3a2f7c2ed314ef26afd611a1.html
https://jingyan.baidu.com/article/fedf0737acaa4f35ad897769.html
https://www.linuxidc.com/Linux/2017-02/140908.htm
https://blog.csdn.net/u011060458/article/details/45853953
https://wenku.baidu.com/view/2091bc8e5ef7ba0d4a733b66.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值