Hadoop(第一天,概念,搭建hadoop环境,在hdfs下运行伪分布式)

1.Hadoop定义:

1)Hadoop是一个由Apache基金会所开发的分布式系统基础架构

2)主要解决,海量数据的存储和海量数据的计算问题。

3)Hadoop通常是指一个更广泛的概念——Hadoop生态圈。因为所有框架都是在Hadoop基础上建立的!

2.Hadoop发展历史:

Google是hadoop的思想之源(Google在大数据方面的三篇论文)GFS --->HDFSMap-Reduce --->MR、BigTable --->Hbase!(非关系型数据库)

3.Hadoop三大发行版本:

三大版本:Apache、Cloudera、Hortonworks

1)Apache版本最原始(最基础)的版本,对于入门学习最好。2005年

2)Cloudera在大型互联网企业中用的较多。(收费!)2008年

比Apache Hadoop在兼容性,安全性,稳定性上有所增强。

3)Hortonworks文档较好。(收费!)2011年,后起之秀

可以支持在windows平台上运行

4.Hadoop的优势:

1)高可靠性:因为Hadoop假设计算元素和存储会出现故障(类似悲观锁),它就维护多个工作数据副本,在出现故障时可以对失败的节点重新分布处理。

2)高扩展性:在集群间分配任务数据,可方便的扩展节点(可以动态维护更新节点)。

3)高效性:在MapReduce的思想下,Hadoop是并行工作(真正理想下的状态),以加快任务处理速度。

5.Hadoop组成:

1)Hadoop HDFS:一个高可靠、高吞吐量的分布式文件系统。(用于存储数据

  • NameNodenn):存储文件的元数据(描述数据特征的信息)
  • DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。(实际的数据信息)
  • Secondary NameNode(2nn):用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。(校验元数据)

2)Hadoop MapReduce:一个分布式的离线并行计算框架。(用于离线处理计算

  • MapReduce将计算过程分为两个阶段:Map(映射,分割)和Reduce(聚合
  • Map阶段并行处理输入数据
  • Reduce阶段对Map结果进行汇总

3)Hadoop YARN:作业调度与集群资源管理的框架。(用于资源调度

  • ResourceManager(rm):处理客户端请求、启动/监控ApplicationMaster、监控NodeManager、资源分配与调度;(总调度)
  • NodeManager(nm):单个节点上的资源管理处理来自ResourceManager的命令、处理来自ApplicationMaster的命令;
  • ApplicationMaster:数据切分、为应用程序申请资源,并分配给内部任务、任务监控与容错。
  • Container(容器):对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量启动命令等任务运行相关的信息。(类似于docker云计算这种)

4)Hadoop Common:支持其他模块的工具模块。(辅助工具/工具模块

基于推荐系统的例子图:

6.搭建hadoop的本地分布式

熟悉linux : useradd love ,  passwd love ,   su love  ,    :wq! ,  /   :wq    #用户创建 , vim的使用!

设置为NAT模式,因为只在内网,不涉及外网。

克隆虚拟机,必须克隆!

修改主机名!sudo vim /etc/hostname   ,重启reboot   

网络节点进行通信!sduo vim /etc/hosts   192.168.91.139 master

创建文件夹:sudo chown pyvip:pyvip model/ software/  #赋予用户文件权限

tar  -zxvf   jdk...  -C /opt/model/    #解压文件

sudo vim /etc/profile  #配置jdk环境变量

source /etc/profile   #重启环境变量

java -version  #查看是否成功

安装hadoop:

tar  -zxvf   jdk...  -C /opt/model/    #解压文件

sudo vim /etc/profile  #配置hadoop环境变量

确认成功  hadoop!

#vim /opt/model/hadoop-2.7.2/etc/hadoop/hadoop-env.sh   修改JAVA_HOME路径

大功告成,配置完了

7.本地运行的hadoop案例

grep案例:

pyvip@master:/opt/model/hadoop-2.7.2$ mkdir input #创建输入文件

cp etc/hadoop/*.xml input/  #给输入文件夹拷贝

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input/ output 'dfs[a-z.]+'  
# 运行hadoop的jar文件  jar文件路径   命令  输入路径  输出路径  过滤条件
#统计出符合过滤条件的单词进行输出

wordcount案例:

mkdir wcinput  #创建文件夹

touch wc.input   vi wc.input   cd ..  #写文件

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput/ wcoutput    
#启动hadoop的jar程序  wordcount命令  输入文件夹  输出文件夹

8.伪分布式运行hadoop案例(Pseudo-Distributed Mode)

(1)启动HDFS并运行MapReduce 程序

配置集群:

etc/hadoop目录下:

(a)配置javahome:hadoop-env.sh  export JAVA_HOME=/opt/module/jdk1.8.0_144
(b)配置:core-site.xml
    <!-- 指定HDFS中NameNode的地址 /主机名 hadoop101 -->
    <property>
	    <name>fs.defaultFS</name>
        <value>hdfs://hadoop101:9000</value>
    </property>

    <!-- 指定hadoop运行时产生文件的存储目录 -->
    <property>
	    <name>hadoop.tmp.dir</name>
	    <value>/opt/module/hadoop-2.7.2/data/tmp</value>
    </property>

(c)配置:hdfs-site.xml  
    <!-- 指定HDFS副本的数量 默认是三个(意思是需要有三个副本主机来存储的)-->
	<property>
		<name>dfs.replication</name>
		<value>1</value>    
	</property>

启动集群:

(a)格式化namenode(第一次启动时格式化,以后就不要总格式化)
    bin/hdfs namenode -format

(b)启动namenode 
    sbin/hadoop-daemon.sh start namenode  #stop停止

(c)启动datanode
    sbin/hadoop-daemon.sh start datanode  #jsp查看下

查看集群:

(a)查看是否启动成功
    jps  #必须配置jdk的环境变量才可以!
(b)查看产生的log日志
    当前目录:/opt/module/hadoop-2.7.2/logs
    cat hadoop-atguigu-datanode-hadoop101.log
(c)web端查看HDFS文件系统
    http://192.168.1.101:50070  #主机号/IP地址都可以!

操作集群:

(a)在hdfs文件系统上创建一个input文件夹
    bin/hdfs dfs -mkdir -p /user/atguigu/input

(b)将测试文件内容上传到文件系统上
    bin/hdfs dfs -put wcinput/wc.input  /user/atguigu/input/

(c)查看上传的文件是否正确
    bin/hdfs dfs -cat  /user/atguigu/ input/wc.input

(d)运行mapreduce程序
    bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/atguigu/input/ /user/atguigu/output

(e)查看输出结果
    命令行查看:bin/hdfs dfs -cat /user/atguigu/output/p*
    浏览器查看:/user/master/output

(f)将测试文件内容下载到本地
    hadoop fs -get /user/atguigu/output/part-r-00000 ./wcoutput/
    #把atguig下的uoutput结果下载到wcoutput里面

(g)删除输出结果
    hdfs dfs -rmr /user/atguigu/output

#注意bin都可不加,都可使用!!!!!!

猜你喜欢

转载自blog.csdn.net/taka_is_beauty/article/details/89855220