企业运维实战--Hadoop linux下HDFS的搭建、hadoop实现主从复制

hadoop简介

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

Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。

Hadoop的主要模块

hadoop Common: 包括Hadoop常用的工具类,主要包括系统配置工具Configuration、远程过程调用RPC、序列化机制和Hadoop抽象文件系统FileSystem等。
Hadoop Distributed File System (HDFS): 分布式文件系统,提供对应用程序数据的高吞吐量,高伸缩性,高容错性的访问。
Hadoop YARN: 任务调度和集群资源管理。
Hadoop MapReduce: 基于YARN的大型数据集并行处理系统。是一种计算模型,用以进行大数据量的计算。

一、Hadoop搭建与配置

环境准备:三台纯净的虚拟机,server2负责hadoop主节点配置,server7、server8先放着。
安装包准备:

hadoop安装包(官网可下载) hadoop-3.2.1.tar.gz
jdk tar包 jdk-8u181-linux-x64.tar.gz

在server1中创建hadoop用户,将安装包scp到该用户家目录中

useradd hadoop
cp hadoop-3.2.1.tar.gz jdk-8u181-linux-x64.tar.gz /home/hadoop/
su - hadoop

解压安装包,设软链接方便使用升级和更新版本

tar zxf hadoop-3.2.1.tar.gz
tar zxf jdk-8u181-linux-x64.tar.gz
ln -s hadoop-3.2.1 hadoop
ln -s jdk1.8.0_181/ java

进入hadoop目录,修改配置文件指向JAVA和HADOOP

cd hadoop/etc/hadoop/
vim hadoop-env.sh

export JAVA_HOME=/home/hadoop/java
export HADOOP_HOME=/home/hadoop/hadoop

在这里插入图片描述

Standalone Operation(单机模式)

返回解压目录,创建测试文件夹input,并导入数据

cd ../..
mkdir input
cp etc/hadoop/*.xml input/

查看hadoop命令行如何操作

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar

在这里插入图片描述

按要求过滤input中的文件,将过滤结果存储到output文件中,过滤条件为抓取dfs开头并中间带任意字母的行

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input output 'dfs[a-z.]+'

在这里插入图片描述

查看抓取过滤结果

du -sh input/
cd output/
ls
cat *

在这里插入图片描述

Pseudo-Distributed Operation(伪分布式部署)

Hadoop还可以以伪分布式模式在单个节点上运行,其中每个Hadoop守护进程在单独的Java进程中运行。

修改配置文件,配置文件位于解压文件下的etc/hadoop/下

vim etc/hadoop/core-site.xml 


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

在这里插入图片描述

vim etc/hadoop/hdfs-site.xml #设置分布式副本数为1,默认为3

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>
cat etc/hadoop/workers 

在这里插入图片描述
给hadoop用户设定密码,配置免密登陆localhost

logout #现在检查您是否可以使用ssh连接到本地主机,而无需密码短语,我们得做免密登陆
passwd hadoop

su -hadoop
ssh-keygen
ssh-copy-id localhost
cd /hadoop/hadoop
ssh localhost  #测试 测完回到hadoop用户
exit ##使用exit退出ssh,否则会叠加shell,引起错乱

初始化hadoop


bin/hdfs namenode -format

在这里插入图片描述
初始化生成的文件会放到/tmp下

ls /tmp/

在这里插入图片描述

开启hadoop(启动NameNode守护程序和DataNode守护程序)

sbin/start-dfs.sh (start-all.sh也可以)

在这里插入图片描述

查看进程

ps ax

在这里插入图片描述

在root配置jdk环境变量

vim .bash_profile

PATH=$PATH:$HOME/.local/bin:$HOME/bin:/home/hadoop/java/bin


source .bash_profile

在这里插入图片描述

查看已设置的hadoop模块,若命令执行报错,则说明jdk环境变量配置有问题,注意:是在root下配置全局变量。

jps是jdk提供的一个查看当前java进程的小工具
jps在软连接java目录中的/bin

jps

在这里插入图片描述

测试访问:firefox:172.25.76.2:9870 #hadoop默认开放端口为9870
在这里插入图片描述

出现上述则证明hadoop配置成功

在这里插入图片描述

创建hadoop用户分布式系统中的家目录

命令行查看hadoop主页

bin/hdfs dfs --help #查看帮助

cd hadoop
bin/hdfs dfsadmin -report

在这里插入图片描述

bin/hdfs dfs -mkdir /user
bin/hdfs dfs -mkdir /user/hadoop

在这里插入图片描述

创建好后才可使用命令行查看里面的内容,否则会报错
此时家目录为空。

bin/hdfs dfs -ls

在这里插入图片描述

将input文件上传到分布式文件系统中

bin/hdfs dfs -put input

在这里插入图片描述
再次查看

bin/hdfs dfs -ls

在这里插入图片描述在这里插入图片描述

将output上传

bin/hdfs dfs -put output

在这里插入图片描述

删除本地文件,hadoop中仍然存在

rm -fr input/ output/

在这里插入图片描述

读取input中的内容,计算其单词数量,输出到output1中

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar wordcount input output1

查看output1的结果
在这里插入图片描述

命令行查看结果

bin/hdfs dfs -cat output1/*

二、网络文件系统nfs实现hadoop从机同步主机(Fully-Distributed Operation(完全分布式部署))

需要三台虚拟机,server1为Hadoop主机,server7、server8为hadoop从机

首先关闭hadoop再进行配置

./sbin/stop-all.sh

server1 root用户:
首先配置nfs,安装相关配置

yum install -y nfs-utils
ssh server2 yum install -y nfs-utils
ssh server3 yum install -y nfs-utils

在server78 同样创建用户 hadoop

useradd hadoop

server2编写nfs访问控制文件,注意:此处的uid,gid为hadoop用户的uid、gid,且三台虚拟机的hadoop用户id必须保持一致,否则无法进行网络文件共享。

vim /etc/exports
/home/hadoop    *(rw,anonuid=1000,anongid=1000)

server2 hadoop用户:

关闭hadoop服务再配置

sbin/stop-dfs.sh

yum install -y nfs-utils

修改配置文件

cd hadoop
vim etc/hadoop/core-site.xml

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


vim etc/hadoop/hdfs-site.xml


<configuration>
    <property>
	<name>dfs.replication</name>
	<value>2</value>  #值改为2,有两个节点
    </property>
</configuration>



vim etc/hadoop/workers

server7
server8 (要有地址解析)

server78 初始化hadoop

bin/hdfs namenode -format

先进行server78挂载任务,匿名用户免密登陆自然会实现

systemctl start nfs
mount 172.25.76.2:/home/hadoop/ /home/hadoop/

hadoop用户操作,检查hadoop配置

su - hadoop
jps

server2 namenode
在这里插入图片描述server78 datanode
在这里插入图片描述
在这里插入图片描述

测试:firefox:172.25.76.2:9870 查看hadoop数据节点工作信息
在这里插入图片描述

关于节点扩容

若有一个虚拟机 server4要加入节点则

yum install  -y nfs-utils.x86_64  #安装nfs
useradd hadoop					##创建hadoop用户
id hadoop  #确保uid和gid都是1000
mount 172.25.76.2:/home/hadoop/ /home/hadoop/  ##挂载网络文件目录
df				##查看挂载



server2内配置worker文件,加入server4节点

server4内,进入到hadoop软连接目录,执行节点添加命令

bin/hdfs --daemon start datanode
jps  ##查询java进程

若没有报错 则可以在jps显示相应的web端,可以去看到server4
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lll_cf

喜欢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值