复习。
---00---
单机如何执行:
控制hadoop执行jar包。
执行官方的wordCount案例:
---01---
集群是如何配置的?
第一步:配置配置文件
需要得到JAVA_HOME的路径。
/usr/local/apps/hadoop-2.7.2/etc/hadoop
[root@localhost hadoop]# $JAVA_HOME
-bash: /usr/local/apps/jdk8: Is a directory
[root@localhost hadoop]#
第二步:
[root@localhost hadoop]# vi hadoop-env.sh
修改这个。
第三步修改下:
[root@localhost hadoop]# vi core-site.xml
hadoop常用的端口可以看下。
第四步:配置hdfs-site.xml
[root@localhost hadoop]# vi hdfs-site.xml
---02---
第五步:格式化
hdfs namenode -format
我这个在自己配置的data里面。
第六步:启动nameNode
sbin/hadoop-daemon.sh start namenode
看下是否启动成功:
第七步:启动dataNode
sbin/hadoop-daemon.sh start datanode
此时再看下文件:
其中data是放dataNode产生的 name是放nameNode产生的。
第八步:web访问 http://192.168.244.138:50070/dfshealth.html#tab-overview
9000是nameNode在内部通信的端口号,50070是外网的访问的地址。
本地集群上传到101的hdfs上去。
日志的查看:
---03---
当进程启动时,格式化nameNode,则:
第一步:在程序开启时格式化namenode
bin/hdfs namenode -format
第二步:停止datanode和namenode
sbin/hadoop-daemon.sh stop datanode
sbin/hadoop-daemon.sh stop namenode
sbin/hadoop-daemon.sh start namenode
sbin/hadoop-daemon.sh start datanode---这个起不来了
第三步:停掉namenode再格式化再启动呢?还是不行。
第四步:解决
注意我们进到
看下namenode的clusterID。
之后在data目录找:
可以看到是不一样的。
如何正确的操作呢?
第一步:先停掉namenode
第二步:删除data下面的所有目录,就是存namenode和datanode的数据的目录,和logs目录。
第三步:再去格式化namenode
格式化之后这个data的目录就生成了
进去:
找version,看到新生成一个ID
第四步:启动namenode:
看到有了ligs
第五步:启动datanod:
第六步看下,是一样的:
---04---
操作hdfs文件:
第一步:在hdfs上创建一个input的文件夹
第二步:在hdfs上创建目录
hdfs dfs -mkdir -p /user/atguigu/input
如何上传文件呢?
[root@localhost hadoop-2.7.2]# hdfs dfs -put input/ /user/atguigu/input
默认128M。
看下具体在哪里?
其它的方法看下:
如何在hdfs运行mapReduce程序,此处也会默认去hdfs上查找数据的。
bin/hadoop jar
share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/atguigu/input/ /user/atguigu/output
看我自己执行的结果:
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput/wordcount output1
都是在hdfs上找的,在hdfs找。
和之前对比下:
查看结果:
bin/hdfs dfs -cat /user/atguigu/output/*
---05---
启动yarn执行mapreduce,配置yarn:
第一步:修改yarn的配置文件
第二步:
第三步:配置mapreduce的JAVA_HOME
第四步:重新命名这个文件
现在必须启动yarn 在yran运行。
yarn是四部分,我们主要关注的是resourcemasnager和nodeManager。
第五步:启动,先要看下namenode和datanode是不是已经启动了。
resourcemanager不能启动:https://blog.csdn.net/qq_44793689/article/details/105874482
---06---
查看yarn的运行效果。
地址:http://192.168.244.138:8088/cluster
执行:
---07---
如何配置历史服务器?这个点进去会报错的。
第一步:
第二步:
第三步:启动服务器
---08---
配置日志的聚集:
开启日志聚集:
第一步:
第二步:
第三步:
关闭NodeManager 、ResourceManager和HistoryManager
[atguigu@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh stop resourcemanager
[atguigu@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh stop nodemanager
[atguigu@hadoop101 hadoop-2.7.2]$ sbin/mr-jobhistory-daemon.sh stop historyserver
启动NodeManager 、ResourceManager和HistoryManager
[atguigu@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start resourcemanager
[atguigu@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start nodemanager
[atguigu@hadoop101 hadoop-2.7.2]$ sbin/mr-jobhistory-daemon.sh start historyserver
第四步:删除hdfs上的文件,亲测有效的
bin/hdfs dfs -rm -R /user/atguigu/output
---09---
---10---
真正的分布式,这个是重点的:
192.168.244.140/141/142
1.修改映射 vi /etc/hosts
192.168.244.138 hadoop100
192.168.244.139 hadoop101
192.168.244.140 hadoop102
192.168.244.141 hadoop103
192.168.244.142 hadoop104
xshell发送会话到所有的窗口:https://blog.csdn.net/a772304419/article/details/104084936
---11---
安全拷贝:scp -r /opt/module root@hadoop102:/opt/module
问题:
---12---
集群的分发脚本:
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 获取上级目录到绝对路径 –P指向实际物理地址,防止软连接
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5 循环
for((host=103; host<105; host++)); do
echo ------------------- hadoop$host --------------
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done
---13---
目前我们是3台机器,102,103,104
---14---
2.在102这台机器上,配置core-site.xml
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/apps/hadoop-2.7.2/data/tmp</value>
</property>
3.在102这台机器上,配置hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:50090</value>
</property>
4.在102这台机器,配置yarn-env.sh
5.在102这台机器,配置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>hadoop103</value>
</property>
6.在102这台机器,配置mapred-env.sh
7.在102这台机器,配置mapred-site.xml
<!-- 指定MR运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
8.在102这台机器,配置mapred-site.xml
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop102:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop102:19888</value>
</property>
9.在102这台机器上配置日志聚集,配置yarn-site.xml
<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
10.分发到其它的机器上。
./xsync /usr/local/apps/hadoop-2.7.2/
---15---
单点启动集群:
1.第一次启动要格式化namenode,首先应该删除data文件夹下的东西和logs文件夹下的东西。
只需要格式化102就可以了,因为namenode在102上的。
hadoop namenode -format
格式化之后就会出现data目录。
要操作的东西:
2.启动namenode
hadoop-daemon.sh start namenode
3.启动datanode吗,这个需要在三台机器上同时启动的。
hadoop-daemon.sh start datanode
---16---
操作文件测试:
第一步:在服务器上创建一个目录,在102上传文件。
其中-p表示创建多级。
bin/hdfs dfs -mkdir -p /user/atguigu/input
第二步:我们通过web去访问下:http://192.168.244.140:50070/explorer.html#/user/atguigu/input
第三步:在103上传文件
bin/hdfs dfs -put wcinput/testhdfs /user/atguigu/input
可以看到有三个副本。就是存了3份,我们验证下是不是存了三份。
看下102的:
同理104
问题:为什么都显示的是localhost:https://blog.csdn.net/QWQWQQQQQQQQQQ/article/details/110954891
第四步:测试在104上删除文件
bin/hdfs dfs -rm -r /user/atguigu/input/testhdfs
---17---
集群的无密钥登录配置:
第一步:
进入目录:
进入此目录:
/root/.ssh
注:你要是新建用户的话,就在/home/atguigu的目录下
[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop103
[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop104
注意:ssh访问自己也需要输入密码,所以我们需要将公钥也拷贝给102
[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop102
实现了免密登录了。
---18---
第一步:配置slaves:
/usr/local/apps/hadoop-2.7.2/etc/hadoop
修改slaves:
./xsync /usr/local/apps/hadoop-2.7.2/etc/hadoop/slaves
第一步:首先停掉集群
先停掉datanode:sbin/hadoop-daemon.sh stop datanode
再停掉namenode:sbin/hadoop-daemon.sh stop namenode
启动:
启动hdfs建议在namenode所在的机器上去启动,启动yarn建议在resourcemanager机器上启动。
第一步:启动hdfs,在102上启动。
sbin/start-dfs.sh
看下群起:
看下集群都起起来了:
第二步:启动yarn:sbin/start-yarn.sh,在103上启动。
第三步:测试
http://192.168.244.140:50070/dfshealth.html#tab-datanode
http://192.168.244.141:8088/cluster
http://192.168.244.142:50090/status.html
关于格式化:
1.删除 data和logs目录下的文件
2.格式化namenode
---
第四步:测试上传小文件,在任意的机器上都可以
bin/hdfs dfs -mkdir -p /user/atguigu/input
bin/hdfs dfs -put wcinput/testhdfs /user/atguigu/input
我们试着上传大文件,分了两块了
在103上看下,看下分为两块了。
放一起:
解压:
---19---
集群时间一致。
---20---