HDFS:
1.启动顺序(面试题)
start-all.sh
nn dn snn
rm nm
2.hdfs dfsadmin
配置hadoop的目录
~]$ vi .bash_profile
export HADOOP_HOME=/opt/software/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
~]$ . .bash_profile
当前磁盘的多少:
~]$ hdfs dfsadmin -report
进入安全模式:
~]$ hdfs dfsadmin -safemode enter
安全模式是否可以上传:
~]$ echo "345">jepson.log
~]$ hdfs dfs -put jepson.log /
put: Cannot create file/jepson.log._COPYING_. Name node is in safe mode.
退出安全模式:
~]$ hdfs dfsadmin -safemode leave
退出安全模式之后上传:
~]$ hdfs dfs -put jepson.log /
~]$ hdfs dfs -ls /
1、多态机器的磁盘存储分布不均匀?
解决方案:
1.1 不加新机器,原机器的磁盘分布不均匀:
一般设置50M
~]$ hdfs dfsadmin -setBalancerBandwidth 52428800
Balancer bandwidth is set to 52428800
sbin]$ ./start-balancer.sh
等价
sbin]$ hdfs balancer
Apache Hadoop集群环境: shell脚本每晚业务低谷时调度
CDH集群环境: 忽略
1.2 加新机器,原机器的磁盘比如450G,现在的新机器磁盘规格是5T
在业务低谷时,先将多台新机器加入到HDFS,做DN;
然后选一台的DN下架,等待HDFS自我修复块3份(网络和io最高的,也是最有风险性的)
2、一台机器的多个磁盘分布不均匀?
2.1无论加不加磁盘,且多块磁盘的分布不均匀
https://hadoop.apache.org/docs/r3.0.0-alpha2/hadoop-project-dist/hadoop-hdfs/HDFSDiskbalancer.html
hdfs diskbalancer -plan node1.mycluster.com
hdfs diskbalancer -execute /system/diskbalancer/nodename.plan.json
Apache Hadoop3.x版本才有
CDH5.12+之后才有
sbin]$ hdfs fsck /
Corrupt blocks: 100
Missing replicas: 20 (1.0 %) ==:>发邮件给管理员
删除块:
sbin]$ hdfs fsck / -delete
如果块需要,先复制到本地:
sbin]$ hdfs dfs -get /xxx/xxx ./
sbin]$ hdfs haadmin
打印出hadoop的环境变量
[hadoop@rzdatahadoop002 sbin]$ hadoop classpath
例如:
A盘450G
B盘400G
新来的data01,会选择B盘,让B盘追上A盘
MapReduce:
Hadoop1.x MR1(计算 + 资源作业调度)
Hadoop2.x MR2(计算)
MR1进程:(过时了,但是面试官最喜欢问的)
JobTracker
TaskTracker:map task、reduce task
MR2进程:
写代码打成jar包提交给yarn运行即可
好处:
1.不需要部署
2.架构设计(面试题***** + 背) ---> MR Job提交到Yarn的工作流程 ---> Yarn架构设计、Yarn的工作流程
MapReduce2架构设计(Yarn工作流程(mr提交应用程序))(*****)
1.用户向Yarn中提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。
2.ResourceManager为该应用程序分配第一个Container,并与对应的Node-Manager通信,要求它在这个Container中启动应用程序的ApplicationMaster。
3.ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManager查看应用程序的运行状态,然后它将各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤4-7。
4.ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源。
5.一旦ApplicationMaster申请到资源后,便与对应的NodeManager通信,要求它启动任务。
6.NodeManager为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。
7.各个任务通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。在应用程序运行过程中,用户可随时通过RPC向ApplicationMaster查询应用程序的当前运行状态。
8.应用程序运行完成后,ApplicationMaster向ResourceManager注销并关闭自己。
当用户向Yarn提交一个应用程序后,Yarn将分为两个阶段运行该应用程序:
a.第一个阶段是启动ApplicationMaster
b.第二个阶段是由ApplicationMaster创建应用程序,为它申请资源,并监控它的整个运行过程,直到运行完成。
Yarn:
ResourceManager:
Application Manager:应用程序管理
Scheduler:调度器
NodeManager:
Container:容器(*****) Yarn的资源抽象的概念,封装了某个NM的多维度资源:memory + cpu
容器里运行map task、reduce task
MR Application Master:
每个MR的作业只有一个,且是运行在NM的container中
词频统计:wordcount
hadoop]$ vi 1.log
bbb 123 1 2 2
aaa bbb ccc
bbb 123 1 2 2
aaa
123
bbb
ccc
xxxxx
www.ruozedata.com
hadoop]$ hdfs dfs -mkdir -p /wordcount/input
hadoop]$ hdfs dfs -put 1.log /wordcount/input
hadoop]$ hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.1.jar \
> wordcount /wordcount/input /wordcount/output1
hadoop]$ hdfs dfs -ls /wordcount/output1
hadoop]$ hdfs dfs -cat /wordcount/output1/part-r-00000
1 1
123 2
2 2
aaa 2
bbb 3
ccc 2
www.ruozedata.com 1
xxxxx 1
http://blog.itpub.net/30089851/viewspace-2015610/
shuffle 洗牌(工作:*****)调优点 hive+spark
在Map和Reduce中间进行的。
花2个小时看:
http://blog.itpub.net/30089851/viewspace-2095837/
Map:映射
Reduce:归约(合并)
http://blog.itpub.net/30089851/viewspace-2095837/
http://hadoop.apache.org/docs/r2.8.3/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html
作业:
1.hadoop高级命令
2.MR提交流程(面试*****)
3.WordCount案例+理解图+shuffle(******)
【来自@若泽大数据】