完全分布式HA
服务器规划
技术栈包含
hdfs
hive on spark
presto
doris
superset
azkaban
kafka
fluent\flume
sqoop\kettle\flink-cdc
atlas
禁用swap/selinux
修改 IP/修改主机名/及主机名和 IP 地址的映射
时间同步/设置时区/自动时间同步
关闭防火墙
关闭SELINUX
新建用户
免密登录(先升级openssh)
发送密钥(dw01上执行)
授权
Tencent Kona v8.0.8-GA
腾讯开源的konaJDK,针对大数据场景下优化
解压并重命名至安装地址:/usr/local/java/
zookeeper-3.5.9
解压并重命名至安装地址:/usr/local/zookeeper
apache-hadoop-3.1.3 解压至安装地址:/usr/local/hadoop
修改环境变量
/usr/local/zookeeper/conf
启动zookeeper集群(每台执行)
三台服务器启动
格式化namenode(dw01执行)
启动namenode(dw01上执行)
在[nn2]和[nn3]上分别执行,同步 nn1 的元数据信息
启动nn2 nn3,分别执行
所有节点上启动datanode
将[nn1]切换为 Active
查看状态
配置yarn-site.xml
配置mapred-site.xml
分发配置文件,启动yarn(dw03 启动)
dw03节点
dw01节点
dw01执行
dw03执行
测试样例
启动脚本
HA切换namenode手动
修改yarn显示log的bug
【大数据】使用Docker搭建Hadoop集群
环境 :
修改名称和存储位置即可。
1.3.1 查看你PC上为VMware分配的IP地址段、子网掩码和网关。打开终端,输入如下命令:
more /Library/Preferences/VMware\ Fusion/vmnet8/dhcpd.conf
添加以下信息:
重启机器即可完成静态IP的修改。记得 ping www.baidu.com 测试网络的连通性。
1.4.1 修改主机名称
sudo vim /etc/hostname
将文件修改为你的主机名,例如hadoop101
1.4.2 修改主机名和host的映射
sudo vim /etc/hosts
1.4.3 重启机器,并使用 ping hadoop10x 测试连通性。
如果你在第一台虚拟机上完成了伪分布模式的搭建,那么此时克隆的两台机器也同样拥有JDK和Hadoop。
scp命令
此时,如果只有一台机器完成了jdk和Hadoop的安装配置,我们可以使用 scp 命令完成数据的安全拷贝。
命令格式: scp -r 要拷贝的文件路径/名称 user@ip:目的路径/名称
rsync命令
与 scp 相同的还有一个命令时 rsync ,其主要用于备份和镜像。 rsync 做文件的复制要比 scp 的速度快, rsync 只对差异文件做更新。 scp 将所有文件都复制过去。使用方法和 scp 一样。
基本格式: rsync -rvl 源文件 目的路径
集群分发脚本
脚本sxync.sh可以更好的同步数据到其他机器上
这个很重要,后面的所有配置都是按照这个来的
3.2.1 配置hadoop-env.sh
3.2.2 配置hdfs-site.xml文件
3.3.1 配置yarn-env.sh
3.3.2 配置yarn-site.xml文件
3.4.1 配置mapred-env.sh
3.4.2 配置mapred-site.xml文件
xsync /opt/module/hadoop-x.x.x/
rm -rf data/ logs/
根据集群配置图,我们可以发现NameNode在hadoop102上,所以我们连接hadoop102,并执行如下命令:
bin/hdfs namenode -format
此时,不允许有任何错,否则格式化失败
4.4.1 在hadoop101上启动DataNode。
sbin/hadoop-daemon.sh start datanode
4.4.2 在hadoop102上启动NameNode和DataNode。
sbin/hadoop-daemon.sh start namenode
sbin/hadoop-daemon.sh start datanode
4.4.3 在hadoop101上启动DataNode和SecondaryNode
sbin/hadoop-daemon.sh start datanode
sbin/hadoop-daemon.sh start secondarynamenode
在浏览器中输入 http://hadoop102:50070 查看集群是否启动成功。如果本机的hosts里边没有Hadoop102到ip地址的映射,此时会无法访问,两种办法:第一,使用过ip:端口号访问;第二,在本机hosts文件里加入三个节点的主机名到ip地址的映射。
5.1.1 在hadoop101上使用指令ssh-keygen -t rsa生成公钥和密钥
6.2.1 在hadoop102上启动HDFS
sbin/start-dfs.sh
7.1 一个大文件个一个小文件
bin/hdfs dfs -put wcinput/wc.input /
bin/hdfs dfs -put /opt/software/hadoop-x.x.x.tar.gz
7.2 在浏览器中输入 http://hadoop102:50070 查看上传结果:
大功告成,告别从入门到放弃!
基于docker搭建hadoop跨主机集群
启动后发现还是无法使用hadoop、hdfs、hive等命令,我们需要安装hadoop和hive
这个时候我们进入bin路径下,即可执行./hadoop或者./hdfs等命令,我们接下来将其加入环境遍历以便全局使用这些命令,在~/.bashrc文件后面追加下面的内容。
之后使用 source ~/.bashrc 命令即可刷新环境变量
追加了上述环境变量后即可全局执行hadoop和hdfs命令。
hdfs执行后有可能访问的还是本地的文件系统,这是因为配置错了。
配置/usr/local/hadoop/etc/hadoop/core-site.xml下的环境变量,使得hdfs可以链接到Docker集群的HDFS系统。
设置环境变量
摘要:本文是基于docker 17.09.0搭建的hadoop 2.7.2 分布式跨主机集群,集群规模为一个master和两个salve,一共使用三台物理主机(两台或者多台物理机均可模拟),集群网络使用的是docker swarm搭建。
备注:中文社区中相关资料极少,相关资料请直接翻阅 官方文档
运行之后会有如下信息提示
进入slave1中,运行如下命令:
同样进入slave2中,运行相同命令
这样,节点slave1 slave2就加入了master的swarm网络了。其中运行的命令即为第二步中创建完网络提示的信息。
观察上一步我们发现, hadoop-master容器启动在master主机上。我们进入到master。
自此,使用docker的跨主机的hadoop集群搭建完成。
问题描述:笔者在搭建过程中碰到了这个问题,docker容器hadoop-master和hadoop-slave1,hadoop-slave2在一个swarm网络中,能够互相ping通,但是在ssh登录的时候出现 connection time out 异常,等了很久最后连接超时,也没有报其他问题。笔者在碰到这个问题的时候,找到的原因是物理主机slave1,slave2的防火墙没有关,直接截拦了对容器内部的ssh访问。
解决方案:
以上就是关于hadoop集群搭建(Hadoop 3.1.3 /Hive 3.1.2/Spark 3.0.0)全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!