虽然本地模式和伪分布式模式开发不会用,但为了感受一下Hadoop的魅力,还是简单介绍一下.
如果成功安装了Hadoop 和配置java和Hadoop的环境变量,就不用再作配置了.直接可以用了.
Grep 和linux的命令的作用一样都是查找文件的字符串的,我们来用以下.
[andy@xiaoai hadoop-2.7.2]$ cp etc/hadoop/*.xml inp
[andy@xiaoai hadoop-2.7.2]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'
如果没有报错就是跑过了.
[andy@xiaoai output]$ ls
part-r-00000 _SUCCESS
[andy@xiaoai output]$ cat part-r-00000
1 dfsadmin
[andy@xiaoai output]$
wordcount 命令是统计词出现的次数的,我们来体验以下.
andy yarn
andy mapreduce
xiaoai
xiaoai
执行程序
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput
如下图:
[andy@xiaoai hadoop-2.7.2]$ cd wcoutput/
[andy@xiaoai wcoutput]$ ll
总用量 4
-rw-r--r--. 1 andy andy 35 2月 18 20:21 part-r-00000
-rw-r--r--. 1 andy andy 0 2月 18 20:21 _SUCCESS
[andy@xiaoai wcoutput]$ cat part-r-00000
andy 2
mapreduce 1
xiaoai 2
yarn 1
[andy@xiaoai wcoutput]$
它就会把每个词出现的次数给统计出来.
伪分布式模式就是在一台机器上运行Hadoop的相关模块,但实际情况是不会出现只有一台机器在运行,所以伪分布式模式在实际生产中是不会用的,所以才叫伪分布式模式,但不代表它没有用,伪分布式模式的配置可以让我们更好的理解Hadoop.
(1)配置集群
(2)启动、测试集群增、删、查
(3)执行WordCount案例
(1)配置集群
(a)配置:hadoop-env.sh
hadoop-env.sh文件在:
hadoop-2.7.2/etc/hadoop(该文件夹是Hadoop配置文件夹,如果找不到配置文件,一般都会在该文件夹里面找)
打开hadoop-env.sh文件,修改JAVA_HOME.
改成设置在环境的JAVA_HOME:
24 # The java implementation to use.
25 export JAVA_HOME=/opt/module/jdk1.8.0_144
(b)配置:core-site.xml
在标签里面加如下内容:
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://xiaoai: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副本的数量为1(因为只有一台机器) -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
(a)格式化NameNode(第一次启动时格式化,以后就不要总格式化)
[andy@xiaoai hadoop-2.7.2]$ bin/hdfs namenode -format
(b)启动NameNode
[andy@xiaoai hadoop-2.7.2]$ sbin/hadoop-daemon.sh start namenode
(c)启动DataNode
[andy@xiaoai hadoop-2.7.2]$ sbin/hadoop-daemon.sh start datanode
(3)查看集群
(a) 用 jps 命令 查看namenode和datanode 进程是否跑起来.
(注意: jps 是jdk的命令,只有安装了jdk才能使用,作用是查看java进程)
[andy@xiaoai hadoop-2.7.2]$ jps
29003 DataNode
29084 Jps
28893 NameNode
[andy@xiaoai hadoop-2.7.2]$
(b) web端查看HDFS文件系统
http://xiaoai:50070/dfshealth.html#tab-overview
这里的xiaoai是要配置了hosts文件才可以使用,如果没有配置就要用ip地址代替.
开开之后我们可以看到如下:
都是一些Hadoop的说明,重要的是上面的Utilities 选项
先选择Utilities -> Browse the file system.
就可以看到Hadoop 的文件,这里是空,因为我们没有上传任何文件.
(c)查看产生的Log日志
说明:遇到Bug时,经常根据日志提示信息去分析问题、解决Bug。
Log文件在在logs文件夹下:
(4)操作集群
(a)在HDFS文件系统上创建一个input文件夹
[andy@xiaoai hadoop-2.7.2]$ bin/hdfs dfs -mkdir /user/andy/input
(b)将测试文件内容上传到文件系统上
[andy@xiaoai hadoop-2.7.2]$ bin/hdfs dfs -put wcinput/wc.input /user/andy/input/
(c)查看上传的文件是否正确
[andy@xiaoai hadoop-2.7.2]$ bin/hdfs dfs -ls /user/andy/input/
Found 1 items
-rw-r--r-- 1 andy supergroup 39 2020-02-18 21:19 /user/andy/input/wc.input
[andy@xiaoai hadoop-2.7.2]$
查看文件内容
[andy@xiaoai hadoop-2.7.2]$ bin/hdfs dfs -cat /user/andy/input/wc.input
andy yarn
andy mapreduce
xiaoai
xiaoai
[andy@xiaoai hadoop-2.7.2]$
(d)运行MapReduce程序
[andy@xiaoai hadoop-2.7.2]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/andy/input /user/andy/output
(e)查看输出结果
命令行查看:
[andy@xiaoai hadoop-2.7.2]$ bin/hdfs dfs -cat /user/andy/output/*
andy 2
mapreduce 1
xiaoai 2
yarn 1
[andy@xiaoai hadoop-2.7.2]$
游览器查看:
这个input就是我们刚才创建的,里面有我们上传上去的那个文件.而output是运行mapreduce产生的结果.
我们点一下后面的文件就可以下载对应的文件.
我们也可以用命令行下载:
hdfs dfs -get /user/andy/output/part-r-00000 ./wcoutput/
(1)配置集群在YARN上运行MR
(2)启动、测试集群增、删、查
(3)在YARN上执行WordCount案例
(1)配置集群
(a)配置yarn-env.sh
配置一下JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
(b)配置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>xiaoai</value>
</property>
(c)配置:mapred-env.sh
配置一下JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
(d)配置: (对mapred-site.xml.template重新命名为) mapred-site.xml
[andy@xiaoai hadoop]$ mv mapred-site.xml.template mapred-site.xml
然后在mapred-site.xm文件添加如下内容:
<configuration>
<!-- 指定MR运行在YARN上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
(2)启动集群
(a)启动前必须保证NameNode和DataNode已经启动
(b)启动ResourceManager
[andy@xiaoai hadoop-2.7.2]$ sbin/yarn-daemon.sh start resourcemanager
(c)启动NodeManager
[andy@xiaoai hadoop-2.7.2]$ sbin/yarn-daemon.sh start nodemanager
(d) 用jps查看进程是否起来.
(3)集群操作
(a)YARN的浏览器页面查看,如图2-35所示
http://xiaoai:8088/cluster
(b)删除文件系统上的output文件
[andy@xiaoai hadoop-2.7.2]$ bin/hdfs dfs -rm -R /user/andy/output/
(c)执行MapReduce程序
[andy@xiaoai hadoop-2.7.2]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/andy/input /user/andy/output
这时候我们可以看到web上有一个作业在跑
Hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。
(1)默认配置文件:
(2)自定义配置文件:
core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。