day41 Hadoop 安装

文章目录


I know, i know
地球另一端有你陪我




Hadoop

Hadoop是一个适合海量数据的分布式存储和分布式计算的平台

三大组件

hdfs:
是一个分布式存储框架,适合海量数据存储

mapreduce:
是一个分布式计算框架,适合海量数据计算

yarn:
是一个资源调度平台,负责给计算框架分配计算资源


1、安装

1 上传 hadoop 安装包并解压至 soft 文件夹

	tar -xvf hadoop-2.7.6.tar.gz

2 配置环境变量,退出后重启配置文件

	vim /etc/profile

	增加hadoop环境变量,将bin和sbin都配置到PATh中
	export HADOOP_HOME=/usr/local/soft/hadoop-2.7.6
	export PATH=.:$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin


	source /etc/profile

3 修改配置文件

hadoop 配置文件在/usr/local/soft/hadoop-2.7.6/etc/hadoop/

3.1 slaves : 从节点列表(datanode)

	vim slaves
	
	//删除原对象
	//增加node1, node2 

3.2 hadoop-env.sh : Hadoop 环境配置文件

	vim hadoop-env.sh
	
	//修改JAVA_HOME
	export JAVA_HOME=/usr/local/soft/jdk1.8.0_171

3.3 core-site.xml : hadoop核心配置文件

	vim core-site.xml 
	
	//在 configuration 标签中间增加以下内容
	
	<property>
	<name>fs.defaultFS</name>
	<value>hdfs://master:9000</value>
	</property>

	<property>
	<name>hadoop.tmp.dir</name>
	<value>/usr/local/soft/hadoop-2.7.6/tmp</value>
	</property>

	<property>
	<name>fs.trash.interval</name>
	<value>1440</value>
	</property>

3.4 hdfs-site.xml : hdfs配置文件

	vim hdfs-site.xml

	//在configuration中间增加以下内容

	<property>
	<name>dfs.replication</name>
	<value>1</value>
	</property>

	<property>
	<name>dfs.permissions</name>
	<value>false</value>
	</property>

3.5 yarn-site.xml: yarn配置文件

	vim yarn-site.xml

	//在configuration中间增加以下内容

	<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>master</value>
	</property>

	<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
	</property>

	<property>
	<name>yarn.log-aggregation-enable</name>
	<value>true</value>
	</property>

	<property>
	<name>yarn.log-aggregation.retain-seconds</name>
	<value>604800</value>
	</property>

	<property>  
	<name>yarn.nodemanager.resource.memory-mb</name>  
	<value>20480</value>  
	</property>  

	<property>  
	<name>yarn.scheduler.minimum-allocation-mb</name>  
	<value>2048</value>  
	</property>  

	<property>  
	<name>yarn.nodemanager.vmem-pmem-ratio</name>  
	<value>2.1</value>  
	</property>  

3.6 mapred-site.xml: mapreduce配置文件

	//重命名模板文件
	mv  mapred-site.xml.template mapred-site.xml

	vim mapred-site.xml

	//在configuration中间增加以下内容

	<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
	</property>

	<property>  
	<name>mapreduce.jobhistory.address</name>  
	<value>master:10020</value>  
	</property>  

	<property>  
	<name>mapreduce.jobhistory.webapp.address</name>  
	<value>master:19888</value>  
	</property> 

4 将 hadoop 安装文件分发到子节点

	scp -r /usr/local/soft/hadoop-2.7.6/ node1:/usr/local/soft/
	scp -r /usr/local/soft/hadoop-2.7.6/ node2:/usr/local/soft/

5 格式化namenode

	hdfs namenode -format

6 启动 hadoop

	start-all.sh

7 访问 hdfs 页面验证是否安装成功

	http://master:50070

8 关闭 hadoop

	stop-all.sh

附:如果安装失败

	   stop-all.sh
	   再次重启的时候
	1、需要手动将每个节点的tmp目录删除: 所有节点都要删除
	   rm -rf /usr/local/soft/hadoop-2.7.6/tmp
	   然后执行将namenode格式化
	2、在主节点执行命令:
	   hdfs namenode -format
	3、启动hadoop
	   start-all.sh

2、基本操作

由于 hadoop 是内置于 linux,并且大部分操作指令和 linux 相同
为了区分,需要在指令前加上 hadoop dfs

1、创建目录 mkdir

	hadoop dfs -mkdir

2、递归创建目录

	hadoop dfs -mkdir -r

3、查看当前路径

	hadoop dfs -ls

4、从当前 linux 中上传文件 put 至 hadoop hdfs 数据库

	hadoop dfs -put linux中的文件 hadoop中的路径
	
	hadoop dfs -put students.txt /data/student

5、从 hadoop hdfs 数据库下载文件至当前 linux 路径

	hadoop dfs hadoop中的文件

	hadoop dfs -get /data/student/students.txt

6、复制

	hadoop dfs -cp /data/a.txt  /data/b/

7、查看文件内容(cat), 如果数据量比较大,不能使用

	hadoop dfs -cat /data/student/students.txt

8、移动 (mv),物理层面文件没有移动,只是改变了元数据(目录结构)

	 hadoop dfs -mv /a.txt /a

9、删除文件(rm)目录(rmr)

	hadoop dfs -rm /a/a.txt
	hadoop dfs -rmr /a
	并没有真正删除文件,只是将文件放到了回收站中,
	/user/root/.Trash/Current  ; 每一个用户都有一个回收站,会定期清空
		<property>
			<name>fs.trash.interval</name>
			<value>1440</value>                 //此行即是时间
		</property>

手动删除回收站

	Hadoop dfs -rmr /user/root/.Trash/Current 

10、强制删除,不经过回收站

	hadoop dfs -rmr -skipTrash /a

11、查看文件末尾(tail)

	 hadoop dfs -tail /data/student/students.txt
	 
	 -f : 一直等待查看

12、查看文件的大小

	hadoop dfs -du -h  /data

3、关于 Hadoop 的 hdfs

1、集群中不同的节点承担不同的职责

负责命名空间职责的节点称为主节点 name node(master node)
负责存储真实数据职责的节点称为从节点 data node(slave node)

其中主节点负责管理文件系统的文件结构,从节点负责存储真实的数据,
称为主从式结构(master-slaves)

注:类比 redis 中的主从复制

2、分布式存储

hadoop 将从节点划分为众多同样大小的块(block),每个块分配了 128MB 的空间大小

1、文件被上传后,会被自动划分,当小于 128MB,会被直接存储到该 block

2、当文件超出 128MB,系统允许10%的溢出,即小于 140.8MB ,一样会被存于一个 block

3、当文件超出允许溢出的范围,文件将会被储存于不同的 block 当中,即分布式存储

因此在分布式存储系统中,一个文件的数据可能分散在不同节点中

3、hdfs 中的节点

从节点(data node)负责存储数据:
数据节点具有储存数据、读写数据的功能,
其中存储的数据块(block)比较类似于硬盘中的"扇区"概念,是 HDFS 存储的基本单位

主节点(name node)负责指挥其它节点:
任何一个"文件系统"(File System, FS) 都需要具备根据文件路径映射到文件的功能,
命名节点就是用于储存这些映射信息并提供映射服务的计算机,
在整个 HDFS 系统中扮演"管理员"的角色,因此一个 HDFS 集群中只有一个命名节点

HDFS 命名空间(NameSpace):
HDFS 支持传统的层次型文件组织结构。
用户或者应用程序可以创建、删除、移动或重命名文件,将文件保存在这些目录里
这种结构称为命名空间

在主节点上,为了加快用户访问的速度,会把整个命名空间信息都放在内存中,
当存储的文件越多时,那么主节点就需要越多的内存空间

4、hdfs 访问顺序

先访问主节点,查询数据在哪些从节点上存储,然后再到从节点读取

总结

hadoop dfsadmin -safemode get 命令是用来查看当前 hadoop 安全模式的开关状态

hadoop dfsadmin -safemode enter 命令是打开安全模式

hadoop dfsadmin -safemode leave 命令是离开安全模式

单纯修改从节点数据存储位置中的数据,是无法影响到主节点中获得的数据的
主节点存储的信息会详细到行!?

上一篇:HDFS集群启动后,DataNode节点没有挂载上


下一篇:hdfs基本操作