hadoop及spark集群搭建后续

本文详细记录了在搭建Hadoop和Spark集群过程中遇到的问题及其解决方案,包括时间同步问题导致的HRegionServer未启动、Spark WebUI无法打开、Hadoop找不到外接磁盘阵列、Python3操作Hbase的语法错误以及Hadoop YARN内存报错等常见问题,通过调整配置和修复代码,成功解决了这些问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题1:查看 jps,里面只有HQuorumPeer,没有 HRegionServer

查看logs,master rejected startup because clock is out of sync

原因:几台机器时间对不上

解决方法:将有问题机器的时间校正

date -s xx:xx:xx

然后重启regionserver 

hbase-daemon.sh --config /usr/local/hbase/hbase-conf start regionserver  

问题2:Spark webUI打不开

原因1:spark ui的默认端口是4040,然后被占用了就会顺序取+1的端口,当开了多个spark程序之后,当端口号加到了4045,在chrome浏览器里面就打不开了。会返回一个UNSAFE PORT的错误信息,
其实这是浏览器禁用了你访问这个端口,程序其实是正常运行的。因此建议手工指定spark.ui.port=4046在spark-defaults.conf配置文件中,
如果4046被占用了,就从4046开始往后+1,跳过4045这个端口,避免看不到spark ui界面的困扰。

原因2:sparksubmit进程没有运行,当sparksubmit停在运行时,4040端口也就关闭了

问题3:hadoop找不到外接磁盘阵列

原因:利用df命令检查linux服务器的文件系统的磁盘空间占用情况

系统显示文件系统/dev/sdb3已经挂到系统上了 ,在/home目录下

修改worker的配置文件vim hdfs-site.xml

<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/usr/local/hadoop-2.7.3/tmp/dfs/data,file:/mnt/dfs/data</value>
</property>

然后再关闭datanode

    bin/hadoop-daemon.sh stop datanode

启动datanode

    hadoop-daemon.sh start datanode
最后在master节点上更新节点

    hdfs dfsadmin -refreshNodes

    yarn rmadmin -refreshNodes

利用hadoop dfsadmin -report查看集群状况,检查节点容量是否更新

问题4:python3操作hbase报错

anaconda3/lib/python3.5/site-packages/hbase/Hbase.py    except IOError, io:SyntaxError:invalid syntax

问题原因:python3与hbase语法不兼容

解决办法:首先要下载python3的Hbase文件,替换Hbase文件/anaconda3/lib/python3.5/site-packages/hbase/Hbase.py和ttypes.py
下载地址为:https://github.com/626626cdllp/infrastructure/tree/master/hbase

问题5:Hadoop YARN中内存报错

# 错误代码
java.lang.IllegalStateException: Spark context stopped while waiting for backend
    at org.apache.spark.scheduler.TaskSchedulerImpl.waitBackendReady(TaskSchedulerImpl.scala:614)
    at org.apache.spark.scheduler.TaskSchedulerImpl.postStartHook(TaskSchedulerImpl.scala:169)
    at org.apache.spark.SparkContext.<init>(SparkContext.scala:567)
    at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2313)

问题原因:Java 8 与 Hadoop 2.9.1 的YARN存在某些不兼容造成内存溢出,导致程序的异常终止 

解决办法:修改Hadoop下的yarn-site.xml配置文件,增加以下属性:

<property>
    <name>yarn.nodemanager.pmem-check-enabled</name>
    <value>false</value>
</property>
 
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>

然后重启YARN,然后再以--master yarn 模式运行Spark即可。

 总结:

yarn.nodemanager.pmem-check-enabled 是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true。 yarn.nodemanager.vmem-check-enabled 是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true。

在YARN的默认配置中,有以下参数 yarn.nodemanager.vmem-pmem-ratio 即任务每使用1MB物理内存,最多可使用虚拟内存量,默认是2.1;yarn.nodemanager.resource.memory-mb即该节点上YARN可使用的物理内存总量,默认是8192(MB);然而我的YARN所在服务器内存实际只有4G,由于没有修改可用物理内存总量参数值,所以在执行action的时候,导致内存被撑爆,从而使spark任务被Kill 掉。

参考文献:

http://keren.iteye.com/blog/1613033

https://cloud.tencent.com/developer/article/1049221

https://blog.youkuaiyun.com/luanpeng825485697/article/details/81048468

https://blog.youkuaiyun.com/linhanyichen/article/details/54909339

 

### 如何搭建Hadoop、Kafka和Spark集群指南 #### 选择合适的部署环境 对于构建大数据生态系统,选择正确的部署环境至关重要。考虑到不同需求和技术栈的选择,在生产环境中通常会优先考虑使用YARN作为资源管理器来运行Spark应用[^2]。 #### 安装配置Hadoop集群 安装Hadoop集群涉及个步骤,首先是下载并解压官方提供的稳定版本二进制包到所有节点机器上。接着修改`core-site.xml`, `hdfs-site.xml`等核心配置文件指定NameNode地址和其他必要参数。最后初始化namenode并通过启动脚本来开启DataNodes和服务进程。 #### 配置Kafka消息队列服务 为了实现高效可靠的消息传递机制,可以采用Apache Kafka作为中间件解决方案之一。具体操作包括但不限于设置Zookeeper实例用于协调各Broker间通信状态同步;编辑`server.properties`定义监听端口、日志目录等相关属性;利用控制台工具创建Topic主题结构以便后续消费组订阅读取消息流。 #### 构建Spark计算框架集群 当上述组件准备就绪之后,则可着手于建立基于Mesos或独立模式下的Spark集群架构。如果是前者的话,需确保已正确安装好mesosphere DC/OS平台,并按照文档指引完成必要的集成工作;而后者则相对简单些——只需在同一网络内的台主机上分别执行相同的操作流程即可达成目标[^1]。 ```bash # 启动HDFS分布式文件系统 $ start-dfs.sh # 开启Yarn ResourceManager与NodeManager守护线程 $ start-yarn.sh # 初始化Kafka Topic $ kafka-topics --create --topic test_topic_name \ --bootstrap-server localhost:9092 \ --partitions 3 --replication-factor 1 # 提交Spark作业至远程服务器执行 $ spark-submit --class org.apache.spark.examples.SparkPi \ --master yarn \ /path/to/examples.jar 10 ``` 通过以上介绍不难看出,成功组建一套完整的包含有Hadoop存储层、Kafka传输管道再加上强大数据分析能力的Spark引擎在内的整体方案并非易事,这不仅考验着工程师们的技术功底同时也对其耐心提出了挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值