1)hadoop介绍
Hadoop是一个生态圈,由Apache基金会提供,是一个分布式处理系统,可以解决海量数据存储和计算分析问题
2)Hadoop优势
1)高可靠性:数据非常重要,数据在存储或者计算过程中出现问题之后可以还原再次处理。
2)高扩展性:节点的上线或者下线不影响集群的正常使用
3)高效性:处理数据的速度很快
4)高容错性:数据存到Hadoop中后有备份,多个节点发生故障容错容灾,是必要的的,Hadoop给备份进行数据维护。
3)Hadoop组成
我们使用Hadoop主要进行数据的离线处理分析,Hadoop两个重要的功能,存储数据和计算分析数据。
(1).HDFS:分布式文件存储数据
(2).MapReduce:分布式数据分析计算系统
(3).YARN:Hadoop资源调度系统,管理Hadoop工作运行(Hadoop2.X之后引入)
(4).Common:辅助Hadoop运行
1.HDFS
Namenode(nn)
Datanode(dn)
Secondary Namenode(2nn)
2.YARN
Nodemanager
Resourcemanager
3.MapReduce
Map:分布式并行计算
Reduce:汇总每个map阶段的结果
4)Hadoop安装
(1).准备工作
准备好一台虚拟机,修改静态ip,关闭防火墙,修改ip映射,安装JDK并且配置环境变量
(2)安装hadoop
1.上传
将hadoop的安装包上传到/usr/local目录下(使用Xshall6进行上传)
2.解压
运行命令:cd /usr/local
运行命令:tar -zxvf hadoop-2.7.3.tar.gz
目录结构:
bin:操作hadoop集群命令
sbin:启动关闭hadoop集群命令
etc:hadoop的配置文件存放目录
lib:hadoop运行时的依赖包
share:hadoop案例存放位置
Include:不重要
libexec:不重要
(3).配置环境变量
编辑/etc/profile文件
vi /etc/profile
JAVA_HOME=/usr/local/jdk1.8 HADOOP_HOME=/usr/local/hadoop-2.7.3 CLASSPATH=$JAVA_HOME/lib/ PATH=$PATH:$JAVA_HOME/bin/:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export PATH JAVA_HOME CLASSPATH HADOOP_HOME |
只需要将红色部门添加即可
(4).重新加载/etc/profile文件
运行命令:source /etc/profile
(5).测试
运行命令:hadoop version
这个时候hadoop已经成功的安装了
5)Hadoop运行模式
(1)本地模式
不需要任何配置就可以启动,该模式在学习和测试中使用,计算文件和计算过程都在本地完成
(2).伪分布式
跟完全分布式类似,但是只有一个节点
(3).完全分布式
多节点协同工作,实际生产过程中使用完全分布式
6)本地模式
grep案例
概述:通过正则表达式找目标文件中匹配的数据,并将匹配的数据放到一个新文件中
(1)将文件上传到linux上(这里怎么上传我就在不逼逼了)
在hadoop目录中创建input目录
将计算文件上传到input目录下
(2) 使用grep案例
案例位置:/usr/local/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar
计算:hadoop jar hadoop-mapreduce-examples-2.7.3.jar grep /usr/local/hadoop-2.7.3/input/greptest.txt
/usr/local/hadoop-2.7.3/output 'zhi[a-z.]+'
hadoop :是运行hadoop的命令
jar :说明运行的文件是jar包文件
hadoop-mapreduce-examples-2.7.3.jar :要运行的jar包
grep:linux中的命令
/usr/local/hadoop-2.7.3/input/greptest.txt :要计算的文件
/usr/local/hadoop-2.7.3/output:计算完成后将计算结果存储的位置,注意,这个文件夹不能存在
'zhi[a-z.]+':要匹配的规则正则表达式
wordcount案例
统计一样单词出现的次数
命令:hadoop jar /usr/local/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-
2.7.3.jar wordcount /usr/local/hadoop-2.7.3/input/wctest.txt /usr/local/hadoop-
2.7.3/wcoutput/
注意:结果输出目录不能存在
输入路径是一个目录那么会计算该目录下所有的文件
如果目录下的文件类型多种多样txt,jpg,png,mp4(数据清洗)
7)伪分布式,运行在HDFS上
(1) 特点: 跟完全分布式是一样的,只不过只有一台节点,我们需要将数据上传到HDFS上分布式存储,从HDFS上获取数据使用MapReduce进行分布式计算
(2)配置:伪分布式运行在HDFS上
1.配置hadoop-env.sh文件
只需要配置JAVA_HOME即可,第25行
export JAVA_HOME=/usr/local/jdk1.8.0_181
2. 配置 core-site.xml
<!-- 指定HDFS中NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://zhiyou101:9000</value> </property>
<!-- 指定hadoop运行时产生文件的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/var/hadoop-2.7.3/data/tmp</value> </property> |
3.配置hdfs-site.xml文件
<!-- 指定HDFS副本的数量,默认是3,因为我们是伪分布式只有一台计算机,设置副本数为1 --> <property> <name>dfs.replication</name> <value>1</value> </property>
|
(3)启动hadoop集群
1.格式化namenode
仅第一次启动时格式化,之后就不要格式化
运行命令:hadoop namenode -format
格式化之后,在core-site.xml文件中配置的hadoop运行时目录就已经创建,里边就保存了namenode的信息
2.启动namenode
[root@zhiyou101 sbin]# ./hadoop-daemon.sh start namenode
3.启动datanode
[root@zhiyou101 sbin]# ./hadoop-daemon.sh start datanode
(4) 查看启动结果
1.终端查看
2.浏览器查看
(5)HDFS文件系统
HDFS文件系统与Linux文件系统类似,根目录都是/,里边的目录都是我们自定义的,
真正的文件还是存放在磁盘上的
Namenode:/var/hadoop-2.7.3/data/tmp/dfs/name
Datanode:/var/hadoop-2.7.3/data/tmp/dfs/data
(6)关闭
[root@zhiyou101 /]# hadoop-daemon.sh stop datanode
[root@zhiyou101 /]# hadoop-daemon.sh stop namenode
8)伪分布式运行在YARN上
(1)配置
1.配置yarn-env.sh文
配置JAVA_HOME
export JAVA_HOME=/usr/local/jdk1.8.0_181
2.配置yarn-site.xml文件
<!-- reducer获取数据的方式 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定YARN的ResourceManager的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>zhiyou101</value> </property> |
3.配置mapred-env.sh文件
配置JAVA_HOME
export JAVA_HOME=/usr/local/jdk1.8.0_181
4.配置mapred-site.xml文件
该文件是没有的,重命名
[root@zhiyou101 hadoop]# cp mapred-site.xml.template mapred-site.xml
<!-- 指定mr运行在yarn上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> |
(2)启动
1.先启动hdfs
2.启动nodemanager
[root@zhiyou101 hadoop]# yarn-daemon.sh start nodemanager
3.启动resourcemanager
[root@zhiyou101 hadoop]# yarn-daemon.sh start resourcemanager
4.一键启动yarn
start-yarn.sh
(3)停止
[root@zhiyou101 hadoop]# yarn-daemon.sh stop nodemanager
[root@zhiyou101 hadoop]# yarn-daemon.sh stop resourcemanager
stop-yarn.sh
(4)查看yarn
1.使用jps命令
2.浏览器查看
9)操作hdfs
(1)创建目录
[root@zhiyou101 /]# hdfs dfs -mkdir -p /usr/input
(2)上传文件
[root@zhiyou101 input]# hdfs dfs -put wctest.txt /usr/input
hdfs上存储的路径
实际在磁盘上存储的位置
/var/hadoop-2.7.3/data/tmp/dfs/data/current/BP-1865685381-192.168.163.101-1554123196289/current
/finalized/subdir0/subdir0
(3)计算文件
hadoop jar /usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-
2.7.3.jar grep /usr/input/greptest.txt /usr/grepoutput 'zhi[a-z.]+'
。
(4)下载文件
[root@zhiyou101 hadoop-2.7.3]# hdfs dfs -get /usr/output/part-r-00000 目标目录
(5)查看文件
[root@zhiyou101 hadoop-2.7.3]# hdfs dfs -cat /usr/output/part-r-00000
10)历史任务
(1)目的
可以看到YARN上执行过的所有任务
(2)配置
修改mapred-site.xml
<!--添加历史服务--> <property> <name>mapreduce.jobhistory.address</name> <value>zhiyou101:10020</value> </property> <!--web网页访问配置--> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>zhiyou101:19888</value> </property> |
(3)启动历史服务
[root@zhiyou101 sbin]# ./mr-jobhistory-daemon.sh start historyserver