一、HDFS文件系统:
大数据开发中首先需要解决的问题:
大量数据如何存储、如何存储的大量数据进行分析
大量数据如何存储:
1.更换硬盘:纵向扩展(扩展一个点的能力来支撑更大的请求)
局限于:受限于磁盘容量、读写速度、当前电脑的硬件配置,使得数据的读写时间不符合大数据的特点:扩展性不好
2.用多台电脑存储:横向扩展(扩展多个节点用来支撑更大的请求)
使用横向扩展存在的问题:
1)如何保证数据的完整性、正确性
2)如何保证多台电脑协同工作
3)如何解决硬件故障问题
多台电脑通过网络等方式协同工作,计算机集群
datenode:存储具体的数据块
元数据:存放数据块和存储位置关系的映射数据
namenode:存储元数据
namenode和datenode之间的协同工作是利用RPC心跳机制来实现。
(datenode每隔一段时间向namenode发送一个数据包,namenode在规定的时间内,接受到数据包时,
就知道自己管理了哪些datenode,可以从数据包中分析当前datenode的状态信息以及存储数据块情况)
硬件故障问题是通过备份机制来实现的。(HDFS默认的副本数量是3)
HDFS各节点的职责:
namenode:存储元数据、管理datanode、指定备份数量
datenode:发送数据包、存储具体的数据块
二、hadoop的安装:Linux环境安装,需要首先安装JDK
1、上传JDK、hadoop安装文件到Linux系统上(XFtp实现,将安装文件上传到/opt/)
2、安装jdk
tar zxvf jdk-8u11-linux-x64.tar.gz -C ./
3、配置jdk环境变量:/etc/profile
vim /etc/profile
在最后一行添加:
export JAVA_HOME=/opt/jdk1.8.0_11
export PATH=$JAVA_HOME/bin:$PATH:$HOME/bin
source /etc/profile 使当前配置文件立即生效
4、安装hadoop
cd /opt
tar zxvf hadoop-2.7.3.tar.gz -C ./
5、配置jdk环境变量 :
/etc/profile
vim /etc/profile
在最后一行添加:
export JAVA_HOME=/opt/jdk1.8.0_11
export HADOOP_HOME=/opt/hadoop-2.7.3
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$PATH:$HOME/bin
source /etc/profile
三、HDFS文件系统的配置:
1、关闭防火墙
查看当前系统的防火墙状态:
firewall-cmd --state
running 运行
not running 禁止
关闭防火墙:systemctl stop firewalld.service
禁止开机自启动:systemctl disable firewalld.service
2、修改hosts文件: /etc/hosts
vim /etc/hosts
在最后一行添加内容:
IP地址 主机名
3、配置免密登录
生成公钥 私钥:
ssh-keygen -t rsa
生成的公钥、私钥存放在、root/.ssh/ 目录下
cd /root/.ssh 进入到.ssh目录
ls 查看:id_rsa 私钥:id_rsa.pub 公钥
免密登录就是将公钥发送给可以免密登录自己的电脑上
拷贝公钥到authorized_keys(白名单)文件中:
cp id_rsa.pub authorized_keys
免密登录测试:ssh hadoop(如果第一次登录,会提示是否连接:yes)
登录成功之后过程中没有提示输入密码
exit 退出
4、配置HDFS文件系统(hadoop中的配置文件是存放在HADOOP_HOME/etc)
1)配置hadoop全局环境变量(hadoop-env.sh)
vim hadoop-env.sh
export JAVA_HOME=/opt/jdk1.8.0_11(25行)
export HADOOP_CONF_DIR=/opt/hadoop-2.7.3/etc/hadoop
2)配置core-site.xml
vim core-site.xml
<configuration>
<!--指定hadoop使用HDFS文件系统作为默认的文件系统-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop:9000</value>
</property>
<!--指定hadoop运行时产生的临时文件存放目录-->
<property>
<name>hadoop.tem.dir</name>
<value>/opt/hadoop-2.7.3/tem</value>
</property>
</configuration>
3)配置hdfs-site.xml
vim hdfs-site.xml
<configuration>
<!--指定HDFS副本数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
<!--开放其他用户权限 -->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
4)格式化hdfs中的namenode
hdfs namenode -format
5)启动HDFS
start-dfs.sh
5.1)关闭:
stop-dfs.sh
启动之后,通过jps查看进程:
3329 DataNode
3592 Jps
3209 NameNode
3483 SecondaryNameNode
在浏览器中查看:(谷歌、火狐)
http://虚拟机IP地址:50070
四、HDFS文件系统配置总结:
1、上传hadoop、jdk(XFTP)
2、解压jdk、hadoop tar zxvf 压缩包 -C /opt
a、关闭防火墙
b、hosts(本地DNS服务器)
c、免密登录
3、配置环境变量:/etc/profile
export JAVA_HOME=
export HADOOP_HOME=
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/sbin:$PATH:$HOME/bin
source /etc/profile
检查对应软件版本
Java -version hadoop version
4、配置HDFS文件系统:hadoop的配置文件/opt/hadoop-2.7.3/etc/hadoop/
1)hadoop环境的配置 hadoop-env.sh
JAVA_HOME= 25行
HADOOP_CONF_DIR= 33行
2)core-site.xml
hadoop默认使用什么类型的文件系统
hadoop运行时产生的临时文件存放目录(没有指定,/tmp 会在系统开机的时候不定期清空内容)
3)hdfs=site.xml
副本数量
4)格式化操作: hdfs namenode -format
产生:生成元数据的内容
5)启动HDFS
start-dfs.sh
启动失败:
先删除/opt/hadoop-2.7.3/tmp
重新格式化
启动