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下配置的
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 localhost1.删除所有主机上的/home/centos/.ssh/*
2.在s201主机上生成密钥对
$>ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa3.将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访问远程主机的操作,一直没想通问题出在哪里,这问题卡了我一个早上。
不过,经过我.....
解决方法如下:
1 我首先看到下面链接中这句话(原来命令还能调试,mmb),然后试了一下,果然问题就出在这里。
https://yq.aliyun.com/ziliao/568487
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集群。
需要修改hdfs.xml和core.xml
之后分三种情况配置即可
手动配置,一开始两个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
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里面 就会自动执行了