Hadoop最最最全面解析

Hadoop的背景起源一—GFS(Google File System)

一、什么是大数据的本质
(1)数据的存储:分布式文件系统(分布式存储)—HDFS(Hadoop Distributed File System)
(2)数据的计算:分布式计算
二、如何解决大数据的存储----分布式文件系统(HDFS来源于GFS)
举例:网盘
(1)GFS:没有硬盘的数据只能存在内存中
(2)Hadoop的安装模式:
      (*)本地模式:至少1台

      (*)伪分布式模式:至少1台

      (*)全分布式模式:至少3台
在这里插入图片描述

Hadoop的背景起源二:MapReduce

一、如何解决大数据的计算之分布式计算
(1)什么是PageRank(MapReduce的问题的来源)
(2)MapReduce(Java语言实现)基础编程模型: 把一个大任务拆分成小任务,再进行汇总
      (*) 更简单一点例子在这里插入图片描述

Hadoop的背景起源三 —HBase:

BigTable ----> 大表 ----> NoSQL数据库:HBase

一、关系型数据库(Oracle、MySQL、SQL Server)的特点
1、什么是关系型数据库?基于关系模型(基于二维表)所提出的一种数据库
2、ER(Entity-Relationalship)模型:通过增加外键来减少数据的冗余
3、举例:学生-系
在这里插入图片描述

二、什么是BigTable?: 把所有的数据保存到一张表中,采用冗余 —> 好处:提高效率
1、因为有了bigtable的思想:NoSQL:HBase数据库
2、HBase基于Hadoop的HDFS的
3、描述HBase的表结构
在这里插入图片描述

Hadoop的环境搭建

一、准备实验的环境:
1、安装Linux、JDK
2、配置主机名(vim /etc/hosts)、免密码登录
3、约定:安装目录:/root/training
4、ssh-keygen -t rsa生成秘钥
5、ssh-keygen -t dsa -P ‘’ -f ~/.ssh/id_rsa
6、cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
7、/etc/hosts 添加主机地址 名称
二、安装:(hadoop-2.4.1示例)
1、解压 : tar -zxvf hadoop-2.4.1.tar.gz -C /root/training/
2、设置环境变量: vi ~/.bash_profile

		HADOOP_HOME=/root/training/hadoop-2.4.1
		export HADOOP_HOME
		PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
		export PATH

生效环境变量: source ~/.bash_profile

三、Hadoop的目录结构
在这里插入图片描述
四、Hadoop的本地模式
1、特点:不具备HDFS,只能测试MapReduce程序
2、修改hadoop-env.sh

修改第27行:export JAVA_HOME=/root/training/jdk1.7.0_75
3、演示Demo: $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar
命令:hadoop jar hadoop-mapreduce-examples-2.4.1.jar wordcount /root/data/input/data.txt /root/data/output/wc
日志:17/08/04 23:28:38 INFO mapreduce.Job: map 100% reduce 100%
注意:MR有一个默认的排序规则

五、Hadoop的伪分布模式
1、特点:具备Hadoop的所有功能,在单机上模拟一个分布式的环境
(1)HDFS:主:NameNode,数据节点:DataNode
(2)Yarn:容器,运行MapReduce程序
主节点:ResourceManager
从节点:NodeManager
2、步骤:

	(1)hdfs-site.xml
		<!--配置HDFS的冗余度-->
		<property>
		  <name>dfs.replication</name>
		  <value>1</value>
		</property>

		<!--配置是否检查权限-->
		<property>
		  <name>dfs.permissions</name>
		  <value>false</value>
		</property>	

	(2)core-site.xml
		<!--配置HDFS的NameNode-->
		<property>
		  <name>fs.defaultFS</name>
		  <value>hdfs://192.168.88.11:9000</value>
		</property>

		<!--配置DataNode保存数据的位置-->
		<property>
		  <name>hadoop.tmp.dir</name>
		  <value>/root/training/hadoop-2.4.1/tmp</value>
		</property>		
		
		
	(3) mapred-site.xml
		<!--配置MR运行的框架-->
		<property>
		  <name>mapreduce.framework.name</name>
		  <value>yarn</value>
		</property>		
		
	(4) yarn-site.xml
		<!--配置ResourceManager的地址-->
		<property>
		  <name>yarn.resourcemanager.hostname</name>
		  <value>192.168.88.11</value>
		</property>

		<!--配置NodeManager执行任务的方式-->
		<property>
		  <name>yarn.nodemanager.aux-services</name>
		  <value>mapreduce_shuffle</value>
		</property>		
		
	(5) 格式化NameNode
	    hdfs namenode -format
		日志:Storage directory /root/training/hadoop-2.4.1/tmp/dfs/name has been successfully formatted.
		
		
	(6) 启动:start-all.sh
	           (*) HDFS: 存储数据
			   (*) Yarn:执行计算
			   
	(7) 访问:(*)命令行
	          (*)Java API
			  (*)Web Console:
					HDFS:http://192.168.88.11:50070
					Yarn:http://192.168.88.11:8088

HDFS的基本操作

1.HDFS的相关命令

	-mkdir            在HDFS创建目录    hdfs dfs -mkdir /data
	-ls               查看当前目录      hdfs dfs -ls /
	-ls -R            查看目录与子目录
	-put              上传一个文件      hdfs dfs -put data.txt /data/input
	-moveFromLocal    上传一个文件,会删除本地文件:ctrl + X
	-copyFromLocal    上传一个文件,与put一样
	-copyToLocal      下载文件  hdfs dfs -copyToLocal /data/input/data.txt 
	-get              下载文件  hdfs dfs -get /data/input/data.txt 
	-rm               删除文件  hdfs dfs -rm /data/input/data.txt 
	-getmerge         将目录所有的文件先合并,再下载
	-cp               拷贝: hdfs dfs -cp /data/input/data.txt  /data/input/data01.txt 
	-mv               移动: hdfs dfs -mv /data/input/data.txt  /data/input/data02.txt 
	-count            统计目录下的文件个数
	-text、-cat       查看文件的内容  hdfs dfs -cat /data/input/data.txt 
	-balancer         平衡操作

2.HDFS的Java API
(1)在HDFS上创建一个目录:
依赖的jar包:
/root/training/hadoop-2.4.1/share/hadoop/common/lib
/root/training/hadoop-2.4.1/share/hadoop/common/
/root/training/hadoop-2.4.1/share/hadoop/hdfs/lib
/root/training/hadoop-2.4.1/share/hadoop/hdfs/
(2)代码(demo)

import java.io.IOException;
import org.apache.hadoop.conf.Configurable;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class TestHadoop {

	public static void main(String[] args) throws Exception {
		// 使用HDFS的API创建目录
		// 设置NameNode地址
		Configuration conf = new Configuration();
		conf.set("fs.defaultFS", "hdfs://192.168.0.112:9000");

		//得到HDFS的文件系统
		FileSystem fs = FileSystem.get(conf);
		fs.mkdirs(new Path("/folder1"));
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值