HDFS集群搭建

架构介绍 :

1> NameNode(nn):就是Master,它是一个主管、管理者
(1)管理HDFS的名称空间;
(2)配置副本策略;
(3)管理数据块(block)映射信息;
(4)处理客户端读写请求
2> DataNode:就是Slave。NameNode下达命令,DateNode执行实际操作。
(1)储存实际的数据块;
(2)执行数据块的写/读操作
3> Client:就是客户端
(1)文件切分。文件上传HDFS的时候。Client将文件切分成一个个的Block,然后进行上传;
(2)与NameNode交互,获取文件的位置信息;
(3)与DataNode交互,读取或者写入数据;
(4)Client提供一些命令来管理HDFS;
(5)Client 可以通过一些命令来访问HDFS;
4> Secondary NameNode:并非NameNode的热备。当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务。
(1)辅助NameNode,分担其工作量;
(2)在紧急情况下,可以辅助恢复NameNode

整体思路

在已经启动单机版hdfs的基础上进行
1.准备三台虚拟机(以完成网络配置,主机名配置,主机域名映射,防火墙关闭并关闭重启,ssh免密,安装JDK等等)
2.在node01上安装Hadoop,配置环境变量(修改和配置一些文件,修改时一定小心错一个字母就会失败。)
3.同步配置信息(把在node01上修改的配置文件同步到node02和node03上)
4.在node01上格式化,并启动集群。
5.用jps查看启动情况,并测试上传下载是否能成功。在web端查看。

node01192.169.159.100
node02192.169.159.101
node03192.169.159.102

一、克隆虚拟机

将搭建起的单机hdfs虚拟机进行克隆操作,克隆两台,克隆之后修改静态ip保证相互可以ping通
image.png
image.png

配置免密登录

并且配置机器的免密登录 在node01上进行操作

生成公钥、私钥

ssh-keygen

执行该命令然后对于弹出提示直接三次回车即可。这个命令本质上就是生成公钥和私钥的。我们也无需为他们制定特殊的存放位置回车就是都用默认的即可。通过下面的图可以看出,公钥在/root/.ssh/id_rsa.pub,私钥在/root/.ssh/id_rsa

拷贝公钥到目标服务器

ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.159.101
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.159.102

测试免密登录

ssh 192.168.159.101
ssh 192.168.159.102
可以看到,无需输入密码,直接ssh就成功了

修改host文件

三台均修改

192.168.159.100 node01 nodeo1.hadoop.com
192.168.159.101 node02 node02.hadoop.com
192.168.159.102 node03 node03.hadoop.com

二、配置hadoop

三台虚拟机都已经完成的步骤

–网络配置
–主机名配置
–主机域名映射
–防火墙和selinux关闭
–ssh免密
–安装jdk

以下所有操作均在node01上进行配置

hadoop-env.sh

此处无需配置,只需修改JAVA_HOME

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el7_9.x86_64

yarn-env.sh

配置yarn-sev.sh时需要新增JAVA_HOME的值。
在# export JAVA_HOME=/home/y/libexec/jdk1.6.0/,在此行下添加JAVA_HOME的值

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el7_9.x86_64

core-site.xml

配置时需要将文件系统节点改成node01。
fs.defaultFS表示指定集群的文件系统类型是分布式文件系统(HDFS),datanode心跳发送到namenode的地址
hadoop.tmp.dir表示hadoop临时文件

<configuration>

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

<property>
        <name>hadoop.tmp.dir</name>
        <value>/export/data/hadoop-3.3.4</value>
</property>

<property>
        <name>hadoop.http.staticuser.user</name>
        <value>root</value>
</property>

<property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
</property>

<property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
</property>

<property>
        <name>fs.trash.interval</name>
        <value>1440</value>
</property>

</configuration>

hdfs-site.xml

dfs.replication原本配置是1,修改为3,三副本策略,表示副本数是3
dfs.name.dir和dfs.data.dir配置不变
配置9870为nameNode的http端口

<configuration>
        <property>
             <name>dfs.replication</name>
             <value>3</value>
        </property>
        <property>
             <name>dfs.namenode.name.dir</name>
             <value>file:/root/hadoop-2.10.0/tmp/dfs/name</value>
        </property>
        <property>
             <name>dfs.datanode.data.dir</name>
             <value>file:/root/hadoop-2.10.0/tmp/dfs/data</value>
        </property>
<property>
<name>dfs.namenode.http-address</name>
<value>192.168.159.100:9870</value>
</property>
</configuration>

mapred-site.xml

配置时需要把mapred-site.xml.template拷贝成map-site.xml文件进行配置(cp mapred-site.xml.template mapred-site.xml )
mapreduce.framework.name指定资源分配yarn

<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>

yarn-site.xml

yarn.resourcemanager.hostname:yarn相关资源服务器的主机名,使用node01
yarn.nodemanager.aux-services和MapReduce计算相关
yarn.nodemanager.vmem-check-enabled 关闭虚拟内存检查
配置值:

<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>node01</value>
</property>
<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>
<property>
	<name>yarn.nodemanager.vmem-check-enabled</name>
	<value>false</value>
</property>

slaves

配置3台主机名,此配置表示三台机器都作为DataNode

node01
node02
node03


同步配置

在node1配置完成后
在node02和node03的hadoop同级目录
执行

cd /home/lxs/
scp -r hadoop/ node02:$PWD
scp -r hadoop/ node03:$PWD

环境变量

现在需要在node01,node02和node03上添加hadoop环境变量
在node02和node03机器的/etc/profile环境变量中添加hadoop配置

vi /etc/profile

export HADOOP_HOME=/home/lxs/hadoop/hadoop-2.10.0
export PATH=${PATH}:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
export PATH=$PATH:/usr/bin:/usr/sbin:/bin:/sbin 

添加配置以后记得加载配置文件,使得配置文件生效
source /etc/profile
如果每次登录都要会失效
那么编辑vi ~/.bashrc 再最后面增加

if [ -f /etc/profile ]; then
	. /etc/profile
fi

启动集群

在node01上格式化(hdfs namenode -format),只需在node01上启动

start-dfs.sh

image.png
node01上查看是否有3个进程启动(jps),node02,node03上分别有一个进程
image.png
image.png
image.png
访问web http://192.168.159.100:9870/
image.png

hdfs常用命令

查看文件和目录(hdfs dfs -ls/)
创建目录(hdfs dfs - mkdir /test)

上传文件(hdfs dfs -put /opt/testData/hdfs/hadoop-2.9.2.tar.gz /test)
解释:上传文件/opt/testData/hdfs/hadoop-2.9.2.tar.gz是指出要上传的文件位置,/test是指出文件上传到哪里

下载文件(hdfs dfs -get /test/hadoop-2.9.2.tar.gz /opt/testData/hdfs/)
解释:下载文件/test/hadoop-2.9.2.tar.gz是指出要下载的文件位置,/opt/testData/hdfs/是指出文件下载到哪个目录下
也可以通过http://192.168.159.100:9870/explorer.html对文件进行管理

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值