学习总结篇——Hadoop01

怕输的人,没资格赢~!

一:Hadooop概述

1.Hadoop组成

1)Hadoop HDFS:一个高可靠、高吞吐量的分布式文件系统

2)HadoopM MapReduce:一个分布式的离线并行计算框架

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

4)Hadoop Common:支持其他模块的工具模块

2.HDFS架构概述

1)NameNode:存储文件的元数据,如文件名,文件目录结构,文件属性,以及每个文件的快列表和快所在的DataNode等

2)DataNode:在本地文件系统存储文件快数据,以及快数据的校验和

3)Secondary NameNode:用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照

3.YARN架构概述 

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

4.MapReduce架构概述

MapReduce将计算过程分为两个阶段:Map和Reduce
1)Map阶段并行处理输入数据
2)Reduce阶段对Map结果进行汇总

二.Hadoop运行环境搭建

1.虚拟机网络模式为NAT

1)设置网络适配器为NAT模式

2)重新启动系统——sync;reboot

2.克隆虚拟机

3.修改静态IP

1)在终端命令窗口输入 vim /etc/udev/rules.d/70-persistent-net.rules

      删除eth0该行;将eth1修改为eth0,同时复制物理ip地址

2)修改IP地址 vim /etc/sysconfig/network-scripts/ifcfg-eth0

需要改的有5项,例:

IPADDR=192.168.1.101

GATEWAY=192.168.1.2

ONBOOT=yes

BOOTPROTO=static

DNS1=192.168.1.2

3)执行service network restart

4)如果报错,reboot,重启虚拟机

4.修改linux主机名

1)修改linux的hosts文件  hostname

2)如果感觉此主机名不合适,我们可以进行修改  vi /etc/sysconfig/network

3)打开此文件后,就可以看到主机名。修改此主机名为我们想要修改的主机名

4)保存退出

5)打开/etc/hosts   vim /etc/hosts,将克隆的IP和主机名写进去

6)重启设备,重启后,查看主机名,已经修改成功

5.修改window的hosts文件

1)进入C:\Windows\System32\drivers\etc 路径

2)打开hosts文件并添加如下内容

6.关闭防火墙 

1)查看防火墙开机启动状态

chkconfig iptables --list

2)关闭防火墙

chkconfig iptables off

7.在opt目录下创建文件

1)创建mm用户

adduser mm

passwd mm

2)设置mm用户具有root权限,修改 /etc/sudoers文件,找到下面一行,在root下面添加一行

mm ALL=(ALL) ALL

3)在/opt目录下创建文件夹

1)在root用户下创建module、software文件夹

mkdir module

mkdir software

2)修改module、software文件所有者

chown mm module

chown mm software

8.安装jdk

1)卸载现有jdk 

rpm -qa | grep java

rpm -e 软件包

2)用传输工具,将jdk、Hadoop-2.7.2 tar.gz导入到opt目录下面的software文件夹下面

3)在linux系统下的opt目录中查看软件包是否导入成功

4)解压jdk到/opt/module目录下

tar -zxvf jdk-7u79-linux-x64.gz -C /opt/module/

5)配置环境变量

①先获取jdk路径:pwd

②打开/etc/profile文件:vi /etc/profile,在文件末尾添加jdk路径

##JAVA_HOME

export JAVA_HOME=/opt/module/jdk1.7.0_79

export PATH=$PATH:$JAVA_HOME/bin

③保存并退出:wq;

④让修改后的文件生效:source /etc/profile

⑤重启sync;reboot

⑥测试jdk安装成功:java -version

9.安装hadoop

1)进入到Hadoop安装包路径下:cd /opt/software

2)解压安装文件到/opt/module下面:tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module

3)查看是否解压成功:ls /opt/module/

4)配置hadoop中的hadoop-env.sh

①Linux系统中获取jdk的安装路径:echo ¥JAVA_HOME

②修改hadoop-env.sh文件中JAVA_HOME路径

export JAVA_HOME=/opt/module/jdk1.7.0_79

5)将hadoop添加到环境变量

①获取hadoop安装路径:pwd

②打开/etc/profile文件:vi /etc/profile,在文件末尾添加jdk路径

##HADOOP_HOME

export HADOOP_HOME=/opt/module/hadoop-2.7.2

export PATH=$PATH:$HADOOP_HOME/bin

export PATH=$PATH:$HADOOP_HOME/sbin

③保存后退出:wq

④让修改后的文件生效:source /etc/profile

⑤重启:sync,reboot

三:Hadoop运行模式

1)本地模式:不需要启动单独进程,直接可以运行,测试和开发时使用

2)伪分布式模式:等同于完全分布式 ,只有一个节点

3)完全分布式模式:多个节点一起运行

四:本地文件运行Hadoop案例

1.官方grep案例

1)创建在hadoop-2.7.2文件下面创建一个input文件夹 mkdir input

2)将hadoop的xml配置文件复制到input cp /etc/hadoop/*.xml input

3)执行share目录下的mapreduce程序

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'

4)查看输出结果 cat output/*

2.官方wordcount案例

1)创建在hadoop-2.7.2文件下面创建一个wcinput文件夹  mkdir wcinput

2)在wcinput文件下创建一个wc.input文件

3)编辑wc.input文件

4)回到hadoop目录:/opt/module/hadoop2.7.2

5)执行程序:

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput

6)查看结果:cat wcountput/part-r-00000

五.伪分布式运行Hadoop案例

1.HDFS上运行MapReduce程序

1)分析:准备一台客户机;安装jdk;配置环境变量;安装hadoop;配置环境变量;配置集群;启动、测试集群增、删、差;在HDFS上执行wordcount案例

2)执行步骤:

①配置集群

(a)配置:hadoop-env.sh;

Linux系统中获取jdk的安装路径:echo $JAVA_HOME;

修改JAVA_HOME路径:export JAVA_HOME=/opt/module/jdk1.7.0_79

(b)配置:core-site.xml

<!-- 指定HDFS中NameNode的地址 -->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop101:8020<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

(c)启动datanode:sbin/hadoop-daemon.sh start datanode

③查看集群

(a)查看是否启动成功:jps

(b)查看产生的log日志:/opts/module/hadoop-2.7.2/logs

(c)web端查看HDFS文件系统:http://192.168.1.101:50070/dfshealth.html#tab-overview

④操作集群

(a)在hdfs文件系统上创建一个Input文件夹:bin/hdfs dfs -mkdir -p /user/mm/mapreduce/wordcount/input

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

(c)查看上传的文件是否正确:

bin/hdfs dfs -ls /user/mm/mapreduce/wordcount/input/

bin/hdfs dfs -cat /user/mm/mapreduce/wordcount/input/wc.input

(d)在HDFS上运行mapreduce程序:

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-example-2.7.2.jar/wordcount /user/mm/mapreduce/mapreduce/wordcount/input /user/mm/mapreduce/wordcount/output

(e)查看输出结果

命令行查看:bin/hdfs dfs -cat /user/mm/mapreduce/wordcount/output/*

⑤将测试文件内容下载到本地

hadoop fs -get /user/mm/mapreduce/wordcount/output/part-r-00000 ./wcinput/

⑥删除输出结果

hdfs dfs -rmr /user/mm/mapreduce/wordcount/output

猜你喜欢

转载自blog.csdn.net/qq_40310148/article/details/86485150