Hadoop使用爬坑

1 hadoop三种模式的搭建(单机、伪分布、完全分布)

2 无法启动nameNode节点,导致展示不出来Hadoop的webUI。

节点起不来,首先看对应日志!

节点起不来,首先看对应日志!

节点起不来,首先看对应日志!

https://www.cnblogs.com/iberichman/p/7119993.html

1 清除tmp目录下文件

2 清除logs目录下文件

实在不得已,例如,50070怎么都连不上

3 格式化文件系统

3 无法启动datanode

1 先运行stop-all.sh
2 删除原目录,即core-site.xml下配置的hadoop.tmp.dir所指向的目录,重新建立配置的空目录
3 删除hadoop的logs目录
4 格式化namdenode,hadoop namenode -format
5 重新启动

3 在windows上运行hadoop程序,出现的问题:
(1)日志警告;
(2)读取core-site.xml文件后,无法识别其中的主机名称;
(3)mapreduce程序无法运行
(4)Windows环境下 Hadoop Error: JAVA_HOME is incorrectly set. 问题

这个问题需要在windows上配置hadoop。
https://blog.csdn.net/fellowlei/article/details/79646698
但是要注意,下载的bin文件是否有用,如果cmd输入hadoop之后没反应,则可能是bin文件有错误。
https://pan.baidu.com/s/1ihSwojksNmk2K5yIAkCZDQ
这个bin是我亲测有效的。可以用。

4 完全分布式ssh配置,通过一台主机登陆到多台主机

  • 1配置SSH
    1)检查是否安装了ssh相关软件包(openssh-server + openssh-clients + openssh)
    yum list installed | grep ssh
    2)检查是否启动了sshd进程
    ps -Af | grep sshd
    3)在client侧生成公私秘钥对。
    ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    4)生成~/.ssh文件夹,里面有id_rsa(私钥) + id_rsa.pub(公钥)
    5)追加公钥到~/.ssh/authorized_keys文件中(文件名、位置固定)
    cd ~/.ssh
    cat id_rsa.pub >> authorized_keys
    6)修改authorized_keys的权限为644.
    chmod 644 authorized_keys
    7)测试
    ssh localhost

  • 1.删除所有主机上的/home/centos/.ssh/*

  • 2.在s201主机上生成密钥对
    $>ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

  • 3.将s201的公钥文件id_rsa.pub远程复制到202 ~ 204主机上。
    并放置/home/centos/.ssh/authorized_keys
    scp id_rsa.pub centos@s201:/home/centos/.ssh/authorized_keys
    scp id_rsa.pub centos@s202:/home/centos/.ssh/authorized_keys
    scp id_rsa.pub centos@s203:/home/centos/.ssh/authorized_keys
    scp id_rsa.pub centos@s204:/home/centos/.ssh/authorized_keys

5 修改用户名

(1)Linux 用户切换、修改用户名、修改密码
https://blog.csdn.net/kzadmxz/article/details/74784337
(2)在修改用户名称时出现:user spark1 is currently logged in
https://www.jianshu.com/p/dc9b5fa50c61
(3)linux 创建用户/添加用户/用户组添加修改删除
https://blog.csdn.net/fenglailea/article/details/37035995

6 xxx is not in the sudoers file.This incident will be reported.的解决方法

https://www.cnblogs.com/xiaochaoyxc/p/6206481.html

7 配置root用户无密登陆到远程主机

在做这功能时,根据正常的操作来,但是怎么都实现不了,通过root访问远程主机的操作,一直没想通问题出在哪里,这问题卡了我一个早上。

image.png

不过,经过我.....
解决方法如下:
1 我首先看到下面链接中这句话(原来命令还能调试,mmb),然后试了一下,果然问题就出在这里。
https://yq.aliyun.com/ziliao/568487

image.png

2 调试结果如下:就是这个链接里面描述的问题,我分别在三台主机上都执行链接所述操作,最终修复了这个bug。
https://segmentfault.com/q/1010000000445726

3 linux系统博大精深的,简单搜索往往找不到你需要的内容,慢慢来吧。

后续,我又一次碰到了root无密登陆的问题,这次卡了我整整一天,尝试了各种解决办法,最终问题还是出在这里。两台机器都需要做

restorecon -r -vv /root/.ssh

如果输入命令后有变化显示,就证明已经产生效果。

8 centos 6.5关闭防火墙
centOS 6.5关闭防火墙步骤

关闭命令:sudo service iptables stop
永久关闭防火墙:sudo chkconfig iptables off

两个命令同时运行,运行完成后查看防火墙关闭状态
service iptables status

9 搭建Hadoop的HA

所有步骤来源于官网,看官可自行了解。
http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html

(1)为什么要配置HA

HDFS集群中NameNode 如果存在单点故障。对于只有一个NameNode的集群,如果NameNode机器出现意外情况,将导致整个集群无法使用.
而影响HDFS集群不可用主要包括以下两种情况:一是NameNode机器宕机,将导致集群不可用,重启NameNode之后才可使用;二是计划内的NameNode节点软件或硬件升级,导致集群在短时间内不可用。
为了解决上述问题,Hadoop给出了HDFS的高可用HA方案:HDFS通常由两个NameNode组成,一个处于active状态,另一个处于standby状态。Active NameNode对外提供服务,比如处理来自客户端的RPC请求,而Standby NameNode则不对外提供服务,仅同步Active NameNode的状态,以便能够在它失败时快速进行切换。

HDFS HA架构的核心作用:

一个典型的HA集群,NameNode会被配置在两台独立的机器上,在任何时间上,一个NameNode处于活动状态,而另一个NameNode处于备份状态,活动状态的NameNode会响应集群中所有的客户端,备份状态的NameNode只是作为一个副本,保证在必要的时候提供一个快速的转移。任何时刻,只能且有一个Active NameNode是非常重要的,否则将会导致集群操作的混乱.如果有两个NameNode将会分可能会导致数据丢失,或者状态异常,这种情况通常称为“split-brain”(脑裂)。所以任何时候只允许一个NameNode作为writer;在当前namenode宕机之后,原来的Standby Node才可以接管Active的所有职能,这就阻止了其他NameNode基于处于Active状态的问题。

HDFS HA配置要素:

NameNode机器:两台配置对等的物理机器,它们分别运行Active和Standby Node。
JouralNode机器:运行JouralNodes的机器。JouralNode守护进程相当的轻量级,可以和Hadoop的其他进程部署在一起,比如NameNode、DataNode、ResourceManager等,至少需要3个且为奇数,保证选举机制的绝对成功。

(2)搭建过程

我使用6台机器搭建的,s1和s6是NN,s2,s3,s4,s5是DN,s2,s3,s4有组成了一个JN集群。


image.png

需要修改hdfs.xml和core.xml

之后分三种情况配置即可

image.png

手动配置,一开始两个NN都是standby状态,需要用命令切换,后面交给ZK管理之后就好了。

10 linux less从后向前查看日志信息

cat XXX | tail -300

less XXX.log
定位到日志文件的最后一行:shift+g
ctrl+b往前一页一页翻页查看

1.全屏导航
ctrl + F - 向前移动一屏
ctrl + B - 向后移动一屏
ctrl + D - 向前移动半屏
ctrl + U - 向后移动半屏

2.单行导航
j - 向前移动一行
k - 向后移动一行

3.其它导航
G - 移动到最后一行
g - 移动到第一行
q / ZZ - 退出 less 命令

11 正常启动集群命令

1 启动Zookeeper集群
2 启动hdfs zkfc -formatZK,ZK自动切换,实现HA
3 start-dfs.sh
4 启动Hbase(可选) start-hbase.sh
5 启动Spark(可选)/soft/spark/sbin下:./start-all.sh
6 如果第一次有NN没起来,hadoop-daemon.sh start namenode

hdfs haadmin -transitionToActive nn1 //切成激活态
hdfs haadmin -transitionToStandby nn1 //切成待命态
hdfs haadmin -transitionToActive --forceactive nn2 //强行激活
hdfs haadmin -failover nn1 nn2 //模拟容灾演示,从nn1切换到nn2

12 解决Spark的RDD数据倾斜

原理:重新设计Key

object DataLeanDemo1 {
    def main(args: Array[String]): Unit = {
        val conf = new SparkConf()
        conf.setAppName("WordCountScala")
        conf.setMaster("local[4]") ;
        val sc = new SparkContext(conf)
        val rdd1 = sc.textFile("G:\\Paper\\biye\\project\\spark\\test.txt",4)
        rdd1.flatMap(_.split(" ")).map((_,1)).map(t=>{
            val word = t._1
            val r = Random.nextInt(100)
            (word + "_" + r,1)
        }).reduceByKey(_ + _,4).map(t=>{
            val word = t._1;
            val count = t._2;
            val w = word.split("_")(0)
            (w,count)
        }).reduceByKey(_ + _,4).saveAsTextFile("G:\\Paper\\biye\\project\\spark\\lean");
    }
}

13 jps提示出现process information unavailable

image.png

https://www.cnblogs.com/freeweb/p/5748424.html

14 执行Spark的start-all.sh出现以下异常信息:
failed to launch: nice -n 0 /bin/spark-class org.apache.spark.deploy.worker.Worker --webui-port 8081 spark://master:7077

http://www.cnblogs.com/yy3b2007com/p/9247580.html

15 Linux系统中chown a+x 与chmod o+x

a+x 是给所有人加上可执行权限,包括所有者,所属组,和其他人
o+x 只是给其他人加上可执行权限

16 Hbase常用启动停止命令和Kafka启动停止常用命令
Hbase
https://blog.csdn.net/cai_4399/article/details/78441165
Kafka
https://www.cnblogs.com/dragkiss/p/5668019.html

17 进入命令都要重新source /etc/profile

1 可以放在/.bashrc里面。或者在/.bashrc里面加一句source /etc/profile
2 可以把这几条命令写在 /etc/bash里面 就会自动执行了

你可能感兴趣的:(Hadoop使用爬坑)