HADOOP分布式文件系统集群搭建
目录
修改master的slaves文件,将需要让脚本自动启动的datanode域名填入salves文件
环境准备
前期准备
centos7虚拟机克隆四台 单核1g内存20硬盘。
其中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
测试一下。
上传安装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到其他服务器
使配置文件生效
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在线,即集群启动成功
批量自动启动集群
配置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可以查看服务器启动情况
HDFS命令常用操作
在进行操作之前,先配置一下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]
上一篇: 读取Hadoop分布式文件系统中的内容