欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

HADOOP分布式文件系统集群搭建

程序员文章站 2022-07-14 15:20:23
...

目录

 

环境准备

前期准备

网络配置

修改主机名

关闭防火墙

配置域名映射

上传安装jdk

修改master的环境变量:/etc/profile

安装HDFS

修改hadoop-env.sh

修改core-site.xml

修改hdfs-site.xml

利用scp命令复制到其他服务器上

启动hdfs集群

先初始化namenode的元数据存储目录:格式化

启动namenode

启动datanode

访问namenode的web页面

批量自动启动集群

修改master的slaves文件,将需要让脚本自动启动的datanode域名填入salves文件

批量启动

HDFS命令常用操作

常见操作

所有操作


环境准备

前期准备

centos7虚拟机克隆四台   单核1g内存20硬盘。

HADOOP分布式文件系统集群搭建

 其中namenode是管理文件系统的元数据,而datanode存储了实际的数据。

网络配置

这里可以直接使用桥接模式,然后使用

dhclient -r  //释放ip
dhclient  //自动获取ip
ip addr //查询IP信息

最终达到的效果就是互相之间可以ping通。当然也可以配置静态ip,随意。

修改主机名

hostnamectl set-hostname master  //作为namenode服务器

其他的主机名分别为slave1、slave2、slave3。

关闭防火墙

systemctl stop firewalld  //关闭防火墙
systemctl disable firewalld  //关闭开机自启
Firewall-cmd --state  //查看防火墙状态

配置域名映射

首先在master上配置,

vi /etc/hosts

然后添加上你对应的ip和主机信息

192.168.8.130 master
192.168.8.131 slave1
192.168.8.132 slave2
192.168.8.129 slave3

并将hosts拷贝到其他三台数据服务器中。这里可以使用scp命令

scp hosts slave1:$PWD //需要切换到/etc目录下执行,否则复制不到指定目录
scp hosts slave2:$PWD
scp hosts slave3:$PWD

测试一下。

HADOOP分布式文件系统集群搭建

上传安装jdk

上传jdk安装包到master的/root目录下,然后使用scp命令将jdk安装包发送到其他三台服务器

scp jdk-8u60-linux-x64.gz slave1:$PWD
scp jdk-8u60-linux-x64.gz slave2:$PWD
scp jdk-8u60-linux-x64.gz slave3:$PWD

对四台服务器上的jdk压缩包解压

tar -zxvf jdk-8u60-linux-x64.gz

修改master的环境变量:/etc/profile

修改环境变量

vi /etc/profile
export JAVA_HOME=/root/jdk1.8.0_60/

export PATH=$PATH:$JAVA_HOME/bin

将修改后的profile文件scp到其他服务器

HADOOP分布式文件系统集群搭建

使配置文件生效

source /etc/profile

 java -version测试环境变量是否生效。

安装HDFS

上传hadoop的安装包到master服务器。我这里上传的位置还是/root目录下。

解压

tar -zxvf hadoop-2.8.5.tar.gz

修改hadoop-env.sh

如果你上传的也是/root目录下,那么配置文件在/root/hadoop-2.8.5/etc/hadoop/目录下

export JAVA_HOME=/root/jdk1.8.0_60/

修改core-site.xml

<configuration>

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

<property>
<name>hadoop.tmp.dir</name>
<value>/root/hdptmp/</value>
</property>

</configuration>

修改hdfs-site.xml

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

<property>
<name>dfs.datanode.data.dir</name>
<value>/root/hdp-data/data/</value>
</property>

</configuration>

利用scp命令复制到其他服务器上

切换到/root目录下

scp -r hadoop-2.8.5 slave1:$PWD
scp -r hadoop-2.8.5 slave2:$PWD
scp -r hadoop-2.8.5 slave3:$PWD

启动hdfs集群

先初始化namenode的元数据存储目录:格式化

先进入hadoop安装目录的bin目录下,执行初始化命令

hadoop namenode -format

启动namenode

返回上级目录,找到sbin目录,

./hadoop-daemon.sh start namenode

启动datanode

分别进入另外三台服务器的sbin目录下

./hadoop-daemon.sh start datanode

访问namenode的web页面

浏览器:http:master的ip地址:50070

可以看到三台datanode在线,即集群启动成功

HADOOP分布式文件系统集群搭建

批量自动启动集群

配置master机器到所有机器的ssh的免密登录

  134  ssh-****** 
  135  ssh-copy-id slave1
  137  ssh-copy-id slave2
  138  ssh-copy-id slave3

ssh-****** 密码不需要输入,直接回车即可。

检查:  从master上: ssh slave1 看是否要密码。exit退出。

修改master的slaves文件,将需要让脚本自动启动的datanode域名填入salves文件

cd /root/apps/hadoop-2.8.0/etc/hadoop
vi slaves
slave1
slave2
slave3

批量启动

用hadoop安装目录中的sbin目录中的start-dfs.sh即可自动批启动集群

启动:start-dfs.sh
停止:stop-dfs.sh

检验:jps可以查看服务器启动情况

HADOOP分布式文件系统集群搭建

HDFS命令常用操作

在进行操作之前,先配置一下hadoop的环境变量

HADOOP分布式文件系统集群搭建

和java的类似,然后source /etc/profile使之生效。


常见操作

上传文件

hadoop fs -put test.txt /

hadoop fs -copyFromLocal test.txt /test.txt.2

下载文件

hadoop fs -get /test.txt.2

hadoop fs -copyToLocal /test.txt.2

创建目录

hadoop fs -mkdir /aaa

hadoop fs -mkdir -p /bbb/xxx

删除目录

hadoop fs -rm -r /aaa

移动/重命名

hadoop fs -mv /test.txt.2 /test.txt.3

hadoop fs -mv /test.txt.3 /bbb/test.txt.4

拷贝文件

hadoop fs -cp /test.txt /bbb/

查看目录下的子文件夹和文件

hadoop fs -ls /bbb/xxx/

hadoop fs -ls -R /    ##递归显示指定路径下的所有文件和文件夹信息

查看文件内容

hadoop  fs  -cat  /test.txt

hadoop  fs  -tail  /test.txt

下载多个文件在本地生成一个合并文件

hadoop  fs  -getmerge  /test/*.dat  ./xx.dat

所有操作

[aaa@qq.com hadoop]# hadoop fs
Usage: hadoop fs [generic options]
	[-appendToFile <localsrc> ... <dst>]
	[-cat [-ignoreCrc] <src> ...]
	[-checksum <src> ...]
	[-chgrp [-R] GROUP PATH...]
	[-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
	[-chown [-R] [OWNER][:[GROUP]] PATH...]
	[-copyFromLocal [-f] [-p] [-l] [-d] <localsrc> ... <dst>]
	[-copyToLocal [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
	[-count [-q] [-h] [-v] [-t [<storage type>]] [-u] [-x] <path> ...]
	[-cp [-f] [-p | -p[topax]] [-d] <src> ... <dst>]
	[-createSnapshot <snapshotDir> [<snapshotName>]]
	[-deleteSnapshot <snapshotDir> <snapshotName>]
	[-df [-h] [<path> ...]]
	[-du [-s] [-h] [-x] <path> ...]
	[-expunge]
	[-find <path> ... <expression> ...]
	[-get [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
	[-getfacl [-R] <path>]
	[-getfattr [-R] {-n name | -d} [-e en] <path>]
	[-getmerge [-nl] [-skip-empty-file] <src> <localdst>]
	[-help [cmd ...]]
	[-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [<path> ...]]
	[-mkdir [-p] <path> ...]
	[-moveFromLocal <localsrc> ... <dst>]
	[-moveToLocal <src> <localdst>]
	[-mv <src> ... <dst>]
	[-put [-f] [-p] [-l] [-d] <localsrc> ... <dst>]
	[-renameSnapshot <snapshotDir> <oldName> <newName>]
	[-rm [-f] [-r|-R] [-skipTrash] [-safely] <src> ...]
	[-rmdir [--ignore-fail-on-non-empty] <dir> ...]
	[-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]
	[-setfattr {-n name [-v value] | -x name} <path>]
	[-setrep [-R] [-w] <rep> <path> ...]
	[-stat [format] <path> ...]
	[-tail [-f] <file>]
	[-test -[defsz] <path>]
	[-text [-ignoreCrc] <src> ...]
	[-touchz <path> ...]
	[-truncate [-w] <length> <path> ...]
	[-usage [cmd ...]]

Generic options supported are
-conf <configuration file>     specify an application configuration file
-D <property=value>            use value for given property
-fs <file:///|hdfs://namenode:port> specify default filesystem URL to use, overrides 'fs.defaultFS' property from configurations.
-jt <local|resourcemanager:port>    specify a ResourceManager
-files <comma separated list of files>    specify comma separated files to be copied to the map reduce cluster
-libjars <comma separated list of jars>    specify comma separated jar files to include in the classpath.
-archives <comma separated list of archives>    specify comma separated archives to be unarchived on the compute machines.

The general command line syntax is
command [genericOptions] [commandOptions]