day_01小笔记----本地运行Hadoop 案例、伪分布式运行Hadoop 案例

0、hadoop1.x和hadoop2.x区别

Hadoop1.x的核心组件 与Hadoop2.x核心组件不一样
Hadoop1.x:hdfs、common、mapreduce(mapreduce同时处理业务逻辑 运算和资源调度、耦合性较大)
Hadoop2.x:hdfs、yarn、common、mapreduce(增加yarn、yarn只负责资源的调度、mapreduce只负责运算)

1、概念理解

HDFS组成:namenode(存储文件的元数据)、datanode(本地储存数据)、secondary namenode(用来监控hdfs状态的辅助后台程序,每隔一段时间获取hdfs元数据的快照)
YARN组成:resourcemanager(1.处理客户端请求 2.监控nodemanager 3. 启动或者监控applicationmaster 4.资源的分配与调度)、nodemanger(1.管理单个节点上的资源、
2.处理来自resourcemanager的命令、3.处理来自applicationmaster的命令)、applicationmaster(1.负责数据的切分 2.为应用程序申请资源并分配给内部任务 3.任务的监控与容错)、
container(是yarn中资源抽象、它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等)
MapReduce组成: map阶段、reduce阶段
1)Map阶段并行处理输入数据
2)Reduce阶段对Map结果进行汇总

2、克隆一台虚拟机

ip地址:192.168.1.105
主机名:hadoop105
用户名:atguigu
配置atguigu具有root权限
关闭防火墙
安装jdk
安装hadoop

3、本地运行Hadoop 案例(3.1.2 官方wordcount案例)

1. 创建在hadoop-2.7.2文件下面创建一个wcinput文件夹
[atguigu@hadoop101 hadoop-2.7.2]$ mkdir wcinput
2. 在wcinput文件下创建一个wc.input文件
[atguigu@hadoop101 hadoop-2.7.2]$ cd wcinput
[atguigu@hadoop101 wcinput]$ touch wc.input
3. 编辑wc.input文件
[atguigu@hadoop101 wcinput]$ vi wc.input
在文件中输入如下内容
hadoop yarn
hadoop mapreduce
atguigu
atguigu
保存退出::wq
4. 回到Hadoop目录/opt/module/hadoop-2.7.2
5. 执行程序
[atguigu@hadoop101 hadoop-2.7.2]$ hadoop jar
share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput
6. 查看结果
[atguigu@hadoop101 hadoop-2.7.2]$ cat wcoutput/part-r-00000
atguigu 2
hadoop 2
mapreduce 1
yarn 1

4、伪分布式运行Hadoop 案例(3.2.1 HDFS上运行MapReduce 程序)

(1)配置集群
(a)配置:hadoop-env.sh
Linux系统中获取JDK的安装路径:
[atguigu@ hadoop101 ~]# echo $JAVA_HOME
/opt/module/jdk1.8.0_144
修改JAVA_HOME 路径:
export JAVA_HOME=/opt/module/jdk1.8.0_144
(b)配置:core-site.xml

fs.defaultFS hdfs://hadoop101:9000 hadoop.tmp.dir /opt/module/hadoop-2.7.2/data/tmp (c)配置:hdfs-site.xml dfs.replication 1 **(2)启动集群** (a)格式化NameNode(第一次启动时格式化,以后就不要总格式化) \[atguigu@hadoop101 hadoop-2.7.2\]$ bin/hdfs namenode -format (b)启动NameNode \[atguigu@hadoop101 hadoop-2.7.2\]$ sbin/hadoop-daemon.sh start namenode (c)启动DataNode \[atguigu@hadoop101 hadoop-2.7.2\]$ sbin/hadoop-daemon.sh start datanode **(3)查看集群** (a)查看是否启动成功 \[atguigu@hadoop101 hadoop-2.7.2\]$ jps 13586 NameNode 13668 DataNode 13786 Jps 注意:jps是JDK中的命令,不是Linux命令。不安装JDK不能使用jps (b)web端查看HDFS文件系统 http://hadoop101:50070/dfshealth.html#tab-overview 注意:如果不能查看,看如下帖子处理 http://www.cnblogs.com/zlslch/p/6604189.html (c)查看产生的Log日志 说明:在企业中遇到Bug时,经常根据日志提示信息去分析问题、解决Bug。 当前目录:/opt/module/hadoop-2.7.2/logs \[atguigu@hadoop101 logs\]$ ls hadoop-atguigu-datanode-hadoop.atguigu.com.log hadoop-atguigu-datanode-hadoop.atguigu.com.out hadoop-atguigu-namenode-hadoop.atguigu.com.log hadoop-atguigu-namenode-hadoop.atguigu.com.out SecurityAuth-root.audit \[atguigu@hadoop101 logs\]# cat hadoop-atguigu-datanode-hadoop101.log (d)思考:为什么不能一直格式化NameNode,格式化NameNode,要注意什么? \[atguigu@hadoop101 hadoop-2.7.2\]$ cd data/tmp/dfs/name/current/ \[atguigu@hadoop101 current\]$ cat VERSION clusterID=CID-f0330a58-36fa-4a2a-a65f-2688269b5837

[atguigu@hadoop101 hadoop-2.7.2]$ cd data/tmp/dfs/data/current/
clusterID=CID-f0330a58-36fa-4a2a-a65f-2688269b5837

注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。所以,格式NameNode时,一定要先删除data数据和log日志,然后再格式化NameNode。
(4)操作集群
(a)在HDFS文件系统上创建一个input文件夹
[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -mkdir -p /user/atguigu/input
(b)将测试文件内容上传到文件系统上
[atguigu@hadoop101 hadoop-2.7.2]KaTeX parse error: Undefined control sequence: \[ at position 78: …)查看上传的文件是否正确 \̲[̲atguigu@hadoop1… bin/hdfs dfs -ls /user/atguigu/input/
[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -cat /user/atguigu/ input/wc.input
(d)运行MapReduce程序
[atguigu@hadoop101 hadoop-2.7.2]$ bin/hadoop jar
share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/atguigu/input/ /user/atguigu/output
(e)查看输出结果
命令行查看:
[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -cat /user/atguigu/output/*
浏览器查看,如图2-34所示

图2-34 查看output文件
(f)将测试文件内容下载到本地
[atguigu@hadoop101 hadoop-2.7.2]$ hdfs dfs -get /user/atguigu/output/part-r-00000 ./wcoutput/
(g)删除输出结果
[atguigu@hadoop101 hadoop-2.7.2]$ hdfs dfs -rm -r /user/atguigu/output

你可能感兴趣的:(java,java,后端)