hdfs性能变差如何定位 hdfs提升性能的措施有哪些_hadoop


一、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 
重新格式化
启动