大数据毕业设计选题推荐-系统运行情况监控系统-Hadoop-Spark-Hive

作者主页 :IT毕设梦工厂✨

个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。

☑文末获取源码☑
精彩专栏推荐 ⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目

文章目录

一、前言

随着信息化时代的快速发展,大数据技术广泛应用于各个领域,包括金融、政务、教育等。在大数据系统的运行过程中,系统运行情况监控系统显得尤为重要。它可以帮助我们更好地理解数据,预判潜在风险,提高系统稳定性,进一步优化系统性能。因此,本课题旨在研究一个基于大数据的系统运行情况监控系统,解决现有解决方案存在的问题,提高分析效率和准确性。

目前,虽然已经存在一些系统运行情况监控工具,但它们普遍存在以下问题:

稳定性低:许多工具在处理大量数据时容易崩溃或出现故障,导致分析过程的不稳定。

可维护性差:一些工具缺乏便捷的维护机制,使得长期使用时问题不断,给运维人员带来巨大压力。

处理能力有限:面对海量数据,一些工具的处理能力显得力不从心,无法满足实时分析的需求。

这些问题使得现有解决方案无法满足日益增长的大数据系统的需求,因此,本课题的研究显得尤为重要。

本课题将研究一个基于大数据的系统运行情况监控系统,主要实现以下功能:

物理使用情况:分析系统的硬件资源使用情况,如CPU、内存、磁盘等。

虚拟资源情况:分析系统的虚拟资源使用情况,如虚拟机数量、虚拟内存等。

组件集群数控单位时间采集量:分析系统各组件集群的单位时间采集量。

服务组件健康情况:监测系统各服务组件的健康状况,及时发现异常。

各应用系统资源使用情况排行:对各应用系统的资源使用情况进行排名和分析。

通过实现这些功能,本课题旨在达到以下目的:

提高系统稳定性:通过便捷的监测和分析,提前发现潜在风险,减少系统故障的发生,提高系统稳定性。

增强系统可视性:提供直观的可视化界面,使运维人员能够更方便地了解系统运行状况。

降低运维成本:通过实时监测和分析,可以提前发现潜在问题,减少不必要的运维成本。

本课题的研究意义在于为大数据系统的运维人员提供一个便捷、稳定、可维护的系统运行情况监控系统。通过本课题的研究,我们可以提高系统稳定性,增强系统可视性,降低运维成本,进一步优化系统性能。

二、开发环境

  • 大数据技术:Hadoop、Spark、Hive
  • 开发技术:Python、Django框架、Vue、Echarts、机器学习
  • 软件工具:Pycharm、DataGrip、Anaconda、VM虚拟机

三、系统界面展示

  • 系统运行情况监控系统界面展示:





四、部分代码设计

  • 系统运行情况监控系统项目实战-代码参考:
java(贴上部分代码) 复制代码
#pfile = 'h_dic.pkl'
localip = sys.argv[1]
#初始化
host_status = {}  #定义一个存储主机状态的空字典
f = open('cache/client.txt')  #打开主机列表文件
while True:
    line = f.readline().split()  #读取文件,把每一行用空格分成一个列表
    if len(line) == 0:break    #读到空之后跳出循环
    host_status[line[0]] = []   #{"ip地址":[列表]}  初始化主机状态字典
f.close()

class myMonitorHandler(SocketServer.BaseRequestHandler):  #继承SocketServer.BaseRequestHandler
    def handle(self):  #
        recv_data = self.request.recv(1024)  #接受的数据
        if self.client_address[0] == localip:   #如果是本机发送的包则pickle.dump数据
            pfile = 'h_dic.pkl'
            fp = file(pfile, 'wb')
            pickle.dump(host_status, fp)
            fp.close()
        if self.client_address[0] in host_status.keys():    #发送消息的客户端ip如果属于host_status的key列表
            if recv_data != "up":
                status_list = recv_data.split(",")  #把字符串转换成列表
                a = status_list[0]    # cpu
                i = a.replace('"','')
                b = str(int(status_list[1]) / 1024) + 'M'    # mem
                c = str(int(status_list[2]) / 1024) + 'M'    # mem free
                d = str(int(status_list[3]) / 1024) + 'M'    # swap
                e = str(int(status_list[4]) / 1024) + 'M'    # swap free
                f = str(int(status_list[5]) / 1024) + 'M'    # disk
                g = str(int(status_list[6]) / 1024) + 'M'    # disk free
                h = re.findall(r'\)\s(.*)',status_list[7])[0]    #day
                #h = status_list[7]
                j = status_list[8] # uptime
                conn = connect(gedb)  # 连接sqldb,没有则新建一个
                # id integer primary key,ip text,cpu text,mem text,swap text,disk text,uptime text
                conn.execute("update server set cpu='%s',mem='%s',memfree='%s',swap='%s',swapfree='%s',disk='%s',diskfree='%s',day='%s',uptime='%s' where ip = '%s'"%(i,b,c,d,e,f,g,h,j,self.client_address[0]))
                conn.commit()    # 执行
                conn.close()    # 关闭连接
            else:
                host_status[self.client_address[0]].append((datetime.datetime.now(),recv_data))   #就把发送时间和数据放入字典的列表中
                #print "From %s : %s %s" % (self.client_address, datetime.datetime.now(), recv_data)
        else:
            #print "sorry,ip %s is not in the monitor" % self.client_address[0]
            pass    #不做任何处理,今后可以做个iptables的禁止处理
			#或者直接在初始化阶段就将允许列表加入iptables其他ip禁止访问端口
        #for t,m in host_status.items():
            #print t,m  #输出内容的,可以注释掉

if __name__ == "__main__":
    host,port = '', 18000
    server = SocketServer.ThreadingTCPServer((host,port),myMonitorHandler)
    server.serve_forever()
java(贴上部分代码) 复制代码
if len(sys.argv) < 2:
    sys.exit(1)

a = sys.argv[1]
b = sys.argv[2]

def get_dump(a, b):
    host,port = a, b
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((host, port))
    s.send("up")
    s.close()

#def load_data_time():
get_dump(a, int(b))
f = file('h_dic.pkl', 'rb')
host_status = pickle.load(f)  #把pickle后的数据还原为字典

for h,m in host_status.items():
#print h,m[-1][0]
    if len(m) != 0:
        oldtime = m[-1][0]
        time_diff = (datetime.now() - oldtime).seconds
        if time_diff > 30:
            print "No data received from %s for %s,check!" % (h,time_diff)
        else:
            print h,(datetime.now() - oldtime).seconds


#get_dump(a, int(b))
#load_data_time()
#time.sleep(20)
    

五、论文参考

  • 计算机毕业设计选题推荐-系统运行情况监控系统-论文参考:

六、系统视频

系统运行情况监控系统-项目视频:

大数据毕业设计选题推荐-系统运行情况可视化分析-Hadoop

结语

大数据毕业设计选题推荐-系统运行情况监控系统-Hadoop-Spark-Hive

大家可以帮忙点赞、收藏、关注、评论啦~
源码获取:私信我

精彩专栏推荐 ⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目

相关推荐
AI量化投资实验室37 分钟前
deap系统重构,再新增一个新的因子,年化39.1%,卡玛提升至2.76(附python代码)
大数据·人工智能·重构
SelectDB1 小时前
Apache Doris 2.1.8 版本正式发布
大数据·数据库·数据分析
TMT星球1 小时前
生数科技携手央视新闻《文博日历》,推动AI视频技术的创新应用
大数据·人工智能·科技
Dipeak数巅科技3 小时前
数巅科技连续中标大模型项目 持续助力央国企数智化升级
大数据·人工智能·数据分析
Ray.19983 小时前
Flink 的核心特点和概念
大数据·数据仓库·数据分析·flink
lisacumt3 小时前
【kerberos】使用keytab文件,kerberos认证工具类 scala版本
hadoop·scala
极客先躯3 小时前
如何提升flink的处理速度?
大数据·flink·提高处理速度
BestandW1shEs3 小时前
快速入门Flink
java·大数据·flink
MasterNeverDown5 小时前
WPF 使用iconfont
hadoop·ui·wpf
速融云5 小时前
汽车制造行业案例 | 发动机在制造品管理全解析(附解决方案模板)
大数据·人工智能·自动化·汽车·制造