1.网络问题
(1)机器联网出现问题
情况:ping一下百度,发现百度ping不通
sudo vim  /etc/sysconfig/network-scripts/ifcfg-ens33
 
检查GATEWAY是否正确,修改过来之后保存退出,重启虚拟机
sudo systemctl restart network 
(2) 域名解析问题
情况:ping 百度,提示是未知的网络或服务
解决:同上,只不过修改的是DNS
2.HDFS故障
2.1 HDFS集群无法启动,请分析问题并修复
先看看集群能否启动,
start -dfs.sh 
如果集群不能启动,显示权限不够,则说明权限分配错误,修改atuigu用户的权限即可
sudo  xcall chown -R atguigu: atguigu /opt/ module/* 
 
如果权限可以启动,则查看所有集群的开启情况:
xcall jps 
发现集群中的datanode都没有启动,然后查看日志:利用notepad++通过NppFTP连接到hadoop101,查看opt/module/hadoop/logs下面的日志:

在日志里面找Exception,发现
java. io. IOException: Incompatible clusterIDS
 
问题分析:说明NN和DN的集群ID不一致,一般发生在HDFS已经可以使用,又二次格式化NameNode,使NameNode得到了一个新的集群ID,造成两者不匹配,
解决办法:修改NN的ID为DN,在data/dfs/name/current下面,vim version.把其中
clusterID那一行改成DN的ID.然后退出保存重启即可
stop -dfs.sh
start -dfs.sh 
ps.如果看不出来,直接把Exception中的内容进行百度
2.2 HDFS运行异常
start -dfs.sh
xcall jps 
发现所有集群启动正常,但是通过9870端口只能发现一台DN,说明三台DN的ID一致,查看三台机器的Version,发现DataNodeUuid一致,需要修改他们的id,在三台机器输入:
sed -i "/^datanodeUuid/s/.*/datanodeUuid= $(uuidgen)" VERSION
 
ps.uuidgen可以随机生成一串id
最后重启集群即可
3.Yarn故障
场景1:运行jar包的时候,运行一半报错,提示virtual memories limit(虚拟内存溢出)
办法:进入yarn-site.xml,关闭虚拟内存检查
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
 
然后集群同步:
xsync etc/ 
最后重启yarn即可
场景2:文件块(block size)太小,导致map和reduce的 数量太多,跑的太慢
办法:在jar包的源码中改变最小切片大小,改为128M

4.shell练习
考察的是输入两个参数,完成分支与循环结构的练习
例题:编写一个脚本func.sh,实现以下功能:
1.  ‘func.sh jiahe N’,N为整数,返回1+...+N的和
 2.  ‘func.sh jiecheng N’,N为整数,返回N的阶乘
 3.  ‘func.sh xxx N’,xxx为任意字符串,N为整数,输出N行xxx
(1)创建脚本并打开
 vim func.sh 
 cat func.sh  
(2)在脚本中输入以下内容
case $1 in
"jiahe")
   s=0
   for((i=1;i<=$2;i++))
   do
     s=$[$s+$i]
   done
   echo $s
   ;;  //两个分号不要忘记
"jiecheng")
    s=1
    for((i=1;i<=$2,i++))
    do
      s=$[$s*$i]
    done
    echo $s
    ;;
*)  // *代表其他情况
   for((i=1;i<=$2,i++))
   do echo  $1
   done
   ;;
esac 
(3)修改脚本权限
chmod +x func.sh 
(4) 测试
// 执行加和命令
./func.sh jiahe 12
// 执行阶乘命令
./func.sh jiecheng 5
// 输出5行结果
./func.sh qita 5
                

















