分布式文件系统
有目录结构,顶层目录是: /
系统中存放的就是文件
系统可以提供对文件的:创建、删除、修改、查看、移动等功能
学习阶段,用虚拟机即可!
先准备4台虚拟机:1个namenode节点 + 3 个datanode 节点
(博主使用的是Vmware安装一台Centos然后克隆3台后,再进行修改 IP 网卡 主机名 hosts对应域名)
先来了解一下虚拟机的网络机制:
再了解一下HDFS的整体工作机制:
主机名:hdp-01 对应的ip地址:192.168.33.61
主机名:hdp-02 对应的ip地址:192.168.33.62
主机名:hdp-03 对应的ip地址:192.168.33.63
主机名:hdp-04 对应的ip地址:192.168.33.64
vi /etc/sysconfig/network-scripts/ifcfg-en33
看到的上述图片已经修改过的,特别注意点:
ONBOOT 要改成yes
BOOTPROTO要改成static
IPADDR GATEWAP NETMASK 要根据实际情况进行更改
DNS1和网关地址一样即可
修改主机名:
vi /etc/hostname
修改hosts文件对应的主机名ip映射
vi /etc/sysconfig/hosts
在windows中将各台linux机器的主机名配置到的windows的本地域名映射文件中:
c:/windows/system32/drivers/etc/hosts
192.168.33.61 hdp-01 192.168.33.62 hdp-02 192.168.33.63 hdp-03 192.168.33.64 hdp-04 |
用crt连接上后,修改一下crt的显示配置(字号,编码集改为UTF-8):
防火墙
关闭防火墙:service iptables stop
关闭防火墙自启: chkconfig iptables off
若上述方法不能使用则:
这是因为CentOS7版本后防火墙默认使用firewalld,因此在CentOS7中关闭防火墙使用以下命令,
//临时关闭
systemctl stop firewalld
//禁止开机启动
systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
vi /etc/profile 在文件的最后,加入:
export JAVA_HOME=/root/apps/jdk1.8.0_60
export PATH=$PATH:$JAVA_HOME/bin
集群内主机的域名映射配置
在hdp-01上,vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.33.61 hdp-01 192.168.33.62 hdp-02 192.168.33.63 hdp-03 192.168.33.64 hdp-04 |
然后,将hosts文件拷贝到集群中的所有其他机器上
scp /etc/hosts hdp-02:/etc/
scp /etc/hosts hdp-03:/etc/
scp /etc/hosts hdp-04:/etc/
(SCP远程命令的使用 SCP 【-r】 当前目录或文件 目标地址或域名:目标文件夹下)
补充 提示: |
如果在执行scp命令的时候,提示没有scp命令,则可以配置一个本地yum源来安装
|
上传hadoop安装包到hdp-01
要点提示 |
核心配置参数:
|
hadoop的配置文件在:/root/apps/hadoop安装目录/etc/hadoop/
1) 修改hadoop-env.sh
export JAVA_HOME=/root/apps/jdk1.8.0_60
2) 修改core-site.xml
fs.defaultFS
hdfs://hdp-01:9000
3) 修改hdfs-site.xml
dfs.namenode.name.dir
/root/hdpdata/name/
dfs.datanode.data.dir
/root/hdpdata/data
dfs.namenode.secondary.http-address
hdp-02:50090
4) 拷贝整个hadoop安装目录到其他机器
scp -r /bigdata/hadoop-2.8.1 hdp-02:/bigdata/
scp -r /bigdata/hadoop-2.8.1 hdp-03:/bigdata/
scp -r /bigdata/hadoop-2.8.1 hdp-04:/bigdata/
5) 启动HDFS
所谓的启动HDFS,就是在对的机器上启动对的软件
要点 提示: |
要运行hadoop的命令,需要在linux环境中配置HADOOP_HOME和PATH环境变量 vi /etc/profile
|
要在hdp-01上执行hadoop的一个命令来初始化namenode的元数据存储目录
hadoop namenode -format
hadoop-daemon.sh start namenode
启动完后,首先用jps查看一下namenode的进程是否存在
然后,启动众datanode们(在任意地方)
hadoop-daemon.sh start datanode
hdp-01
hdp-02
hdp-03
hdp-04
在hdp-01上用脚本:start-dfs.sh 来自动启动整个集群
如果要停止,则用脚本:stop-dfs.sh
hdfs的客户端有多种形式:
文件的切块大小和存储的副本数量,都是由客户端决定!
所谓的由客户端决定,是通过配置参数来定的
hdfs的客户端会读以下两个参数,来决定切块大小、副本数量:
切块大小的参数: dfs.blocksize
副本数量的参数: dfs.replication
上面两个参数应该配置在客户端机器的hadoop目录中的hdfs-site.xml中配置
dfs.blocksize
64m
dfs.replication
2
上传文件到hdfs中
hadoop fs -put /本地文件 /aaa
下载文件到客户端本地磁盘
hadoop fs -get /hdfs中的路径 /本地磁盘目录
在hdfs中创建文件夹
hadoop fs -mkdir -p /aaa/xxx
移动hdfs中的文件(更名)
hadoop fs -mv /hdfs的路径1 /hdfs的另一个路径2
复制hdfs中的文件到hdfs的另一个目录
hadoop fs -cp /hdfs路径_1 /hdfs路径_2
删除hdfs中的文件或文件夹
hadoop fs -rm -r /aaa
查看hdfs中的文本文件内容
hadoop fs -cat /demo.txt
hadoop fs -tail -f /demo.txt