目录
一、本地模式
官方案例之Grep
首先在hadoop目录下创建input文件夹
然后将etc/hadoop路径下xml格式的文件复制到input文件夹下
mkdir input
cp etc/hadoop/*.xml input/
然后执行以下命令,意思就是使用hadoop命令执行如下案例jar包,并且按照input下的规则将内容用正则表达式过滤,最后结果存入output文件夹,这是一个演示案例,大家都可以试一试感觉,对这种操作有个初步认识。
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar grep input/ output 'dfs[a-z.]+'
官方案例之WordCount
看见这个名字大概就明白这个案例是用来统计单词数量的,同样的方式,创建输入文件夹wcinput,然后在wcinput文件夹下创建wc.input文件,里面填写一些内容
mkdir wcinput
touch wc.input
内容如下:
jordan jordan
curry jordan
kobe
kobe
james
然后执行hadoop命令
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount wcinput/ wcoutput
得出结果在wcoutput文件夹下
总结
通过以上两个案例我们大概已经对hadoop命令有个初步的概念,我的理解暂时就是hadoop命令能够执行一个程序去处理数据,这个程序需要一个数据源---input,并且可以用一定的规则去执行程序,之后就是将结果输入到一个目标文件---ouput。
二、伪分布式模式
一、配置信息配好
(我的版本是3.3.1,所以主目录都叫这个)
~主目录hadoop-3.3.1/etc/hadoop下的core-site.xml
<configuration>
<!--指定HDFS中NameNode的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<!--指定Hadoop运行时产生文件的存储目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.3.1/data/tmp</value>
</property>
</configuration>
~主目录hadoop-3.3.1/etc/hadoop下的hdfs-site.xml
<configuration>
<!--指定HDFS副本数量-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
~主目录hadoop-3.3.1/etc/hadoop下的hadoop-env.sh添加配置jdk的主目录
export JAVA_HOME=JAVA_HOME
二、格式化并启动namenode和datanode
格式化命令在hadoop的bin目录下执行
hdfs namenode -format
启动namenode、datanode
hdfs --daemon start namenode
hdfs --daemon start datanode
然后输入jps看是否启动正常
三、浏览器输入linux机器的ip加端口号9870
这个端口号不同版本未必相同,可以根据官方文档可以查看默认值
页面显示如下图
文件目录
可以输入以下命令创建出自己的文件夹目录,如下所示
hdfs dfs -mkdir -p /user/loong/input
页面也已经有东西了
hdfs操作文件的一般命令:
查看文件目录
hdfs dfs -ls /
每层目录都展示
hdfs dfs -lsr /
复制文件
hdfs dfs -put wcinput/wc.input /user/loong/input
文件还可以下载
四、执行一下hadoop的wordcount案例
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /user/loong/input /user/loong/output
输出结果也有了,结果可以查看和下载
五、启动YARN运行MapReduce
配置集群
yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_301
yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>LOONG002</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_301
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>LOONG002:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>LOONG002:19888</value>
</property>
</configuration>
启动resourcemanager
yarn --daemon start resourcemanager
启动nodemanager
yarn --daemon start nodemanager
启动历史服务器
mapred --daemon start historyserver
当前看到有这些进程
配置完可以执行一下示例:
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /user/loong/input /user/loong/output
前台页面打开LOONG101:8088可以看到mapreduce的可视化界面
查看历史
查看日志
日志也可以在$HADOOP_HOME/logs路径下查看
配置文件介绍
core-site.xml:配置namenode的主机名称和端口号,运行hadoop产生的临时文件地址
hdfs-site.xml:配置hdfs的副本数
yarn-site.xml:nodemanager和resourcemanager相关配置,以及日志相关配置
mapred-site.xml:mapreduce相关配置和历史服务器配置