DataSophon是近日开源的一款国产自研大数据管理平台,致力于快速实现部署、管理、监控以及自动化运维大数据服务组件和节点的能力,帮助你快速构建起稳定、高效的大数据集群服务。
主要有以下特性:
极易部署,1小时可完成300节点的大数据集群部署
国产化兼容,兼容ARM服务器和常用国产化操作系统
监控指标全面丰富,基于生产实践展示用户最关心的监控指标
灵活便捷的告警服务,可实现用户自定义告警组和告警指标
可扩展性强,用户可通过配置的方式集成或升级大数据组件
datasophon 的官网
https://datasophon.github.io/datasophon-website/
参考资料:
https://github.com/datasophon/datasophon
各集成组件均进行过兼容性测试,并稳定运行于300+个节点规模的大数据集群,日处理数据量约4000亿条。
在海量数据下,各大数据组件调优成本低,平台默认展示用户关心和需要调优的配置。
操作系统:
centos7.9x64
主机名:
cat /etc/hosts
----
172.16.10.11 flyfish11
172.16.10.12 flyfish12
172.16.10.13 flyfish13
172.16.10.14 flyfish14
172.16.10.15 flyfish15
172.16.10.16 flyfish16
172.16.10.17 flyfish17
-----
本次安装前 4台虚拟机 (flyfish11/flyfish12/flyfish13/flyfish14)
flyfish11 做主节点 其它做worker从节点
DDP部署包下载地址:
参考官网下载
所有节点都要配置:
yum install -y firewall* iptable*
(1) 关闭firewalld
systemctl stop firewalld.service
systemctl disable firewalld.service
firewall-cmd --state
(2) 关闭iptables
iptables -F
systemctl stop iptables.service
service iptables save
systemctl disable iptables.service
(3) 禁用 selinux
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
setenforce 0
getenforce 0
sestatus
重启机器
reboot
做root用户无密钥认证
ssh-keygen ---一直敲回车到最后
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
将所有的公钥导入authorized_keys 分发到 所有的 机器的.ssh/ 下面
然后测试
vim /etc/security/limits.conf
---
* soft nofile 65535
* hard nofile 1029345
* soft nproc unlimited
* hard nproc unlimited
* soft memlock unlimited
* hard memlock unlimited
---
所有机器 yum install chrony*
1. flyfish11--flyfish14 同步阿里云的时间服务器:
vim /etc/chrony.conf 增加
----
注释掉相关默认的server
server ntp1.aliyun.com prefer
service chronyd start
chkconfig chronyd on
service chronyd stop
service chronyd start
chkconfig chronyd on
wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
yum -y install mysql57-community-release-el7-11.noarch.rpm
yum -y install mysql-server --nogpgcheck --nogpgcheck #不校验数字签名
启动MySQL
service mysqld start
chkconfig mysqld on
service mysqld status
cat /var/log/mysqld.log |grep password
初始化MySQL:
set global validate_password_policy=0;
set global validate_password_length=1;
set password = password("flyfish225");
flush privileges;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY 'flyfish225' WITH GRANT OPTION;
flush privileges;
打开my.cnf:vim /etc/my.cnf
在[mysqld]下添加:disable_ssl=skip_ssl
重启MySQL:systemctl restart mysqld.service
创建datasophon数据库相关:
mysql -uroot -pflyfish225
set global validate_password_policy=0;
set global validate_password_length=1;
CREATE DATABASE IF NOT EXISTS datasophon DEFAULT CHARACTER SET utf8;
grant all privileges on *.* to datasophon@"%" identified by 'datasophon' with grant option;
GRANT ALL PRIVILEGES ON *.* TO 'datasophon'@'%';
FLUSH PRIVILEGES;
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
wget https://nginx.org/download/nginx-1.22.0.tar.gz
Nginx编译安装步骤
tar -zxvf nginx-1.22.0.tar.gz
cd nginx-1.22.0
./configure
make
make install
启动nginx
cd /usr/local/nginx/
sbin/nginx
安装软件准备:
DDP-1.0.0
安装目录
mkdir -p /opt/datasophon/DDP/packages
将DDP-1.0.0目录下的文件下载并上传到/opt/datasophon/DDP/packages目录下:
cd /root/software/datasophon/DDP-1.0.0
cp -ap * /opt/datasophon/DDP/packages/
datasophon-manager-1.0.0.tar.gz上传到服务器,
并解压到/opt/datasophon目录下(该目录可自行选择),
datasophon-manager目录结构如下所示:
cd /root/software/datasophon
tar -zxvf datasophon-manager-1.0.0.tar.gz
mv datasophon-manager-1.0.0 /opt/datasophon/
导入datasophon-manager安装根目录下sql文件夹下datasophon-1.0.0.sql文件,创建数据表:
mysql -uroot -p flyfish225
use datasophon;
source /opt/datasophon/datasophon-manager-1.0.0/sql/datasophon-1.0.0.sql;
show tables;
蒋dist 移动到nginx 默认目录下面
cd /root/software/datasophon
mv dist.zip /usr/local/nginx/
cd /usr/local/nginx/
unzip dist.zip
nginx 配置文件准备:
cd /usr/local/nginx/conf/
cp -ap nginx.conf nginx.conf.bak
vim nginx.conf
--------
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 8888;# 访问端口(自行修改)
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/local/nginx/dist; # 前端解压的 dist 目录地址(自行修改)
index index.html index.html;
}
location /ddh {
proxy_pass http://172.16.10.11:8081; # 接口地址(自行修改)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header x_real_ipP $remote_addr;
proxy_set_header remote_addr $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_connect_timeout 4s;
proxy_read_timeout 30s;
proxy_send_timeout 12s;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
-----
cd /usr/local/nginx
sbin/nginx -t
sbin/nginx -s reload
ps -ef |grep nginx
netstat -nultp |grep 8888
修改数据库配置
cd /opt/datasophon/datasophon-manager-1.0.0/conf
vim application.yml # 主要修改url和password的值
----
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://172.16.10.11:3306/datasophon?useUnicode=true&characterEncoding=utf-8
username: datasophon
password: datasophon
driver-class-name: com.mysql.jdbc.Driver
----
mysql -h172.16.10.11 -udatasophon -pdatasophon
cd /opt/datasophon/datasophon-manager-1.0.0
sh bin/datasophon-api.sh start api #启动
sh bin/datasophon-api.sh stop api #停止
sh bin/datasophon-api.sh restart api #重启
访问页面
登录 http://172.16.10.11:8888
默认用户名和密码为admin/admin123
安装:
创建集群
组件版本
进入
配置集群
主机验证
主机分发:
主机分发完成
初始化安装监控组件 三个: AlertManager,Grafana和Prometheus三个组件
DataSophon需要依赖此三个组件实现系统监控告警管理。
分配节点
worker 节点
告警目录配置与端口
告警配置与端口
监控配置完成
进入集群
进入查看总览
主机状况
告警管理
告警指标管理
部署zookeeper
安装HDFS服务
选择HDFS,点击【下一步】。
安装YARN
选择YARN,点击【下一步】。
安装hive
mysql -uroot -pflyfish225
# mysql -uroot -pflyfish225
mysql> create database hive character set utf8;
mysql> grant all privileges on hive.* to 'hive'@'%' identified by 'hive' with grant option;
mysql> grant all privileges on hive.* to 'hive'@'flyfish11' identified by 'hive' with grant option;
mysql> flush privileges;
依次部署其它大数据组件,由于开的是虚拟机配置有所不够,就不按安装其它组件
datasophon 目前只能用于尝试部署大数据组件,很多功能并不完善。生成慎用。
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
我有一个围绕一些对象的包装类,我想将这些对象用作散列中的键。包装对象和解包装对象应映射到相同的键。一个简单的例子是这样的:classAattr_reader:xdefinitialize(inner)@inner=innerenddefx;@inner.x;enddef==(other)@inner.x==other.xendenda=A.new(o)#oisjustanyobjectthatallowso.xb=A.new(o)h={a=>5}ph[a]#5ph[b]#nil,shouldbe5ph[o]#nil,shouldbe5我试过==、===、eq?并散列所有无济于事。
我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere
Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/
我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test
我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r
我在app/helpers/sessions_helper.rb中有一个帮助程序文件,其中包含一个方法my_preference,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,这样我就可以在测试中使用getuser_path(my_preference)。在其他帖子中,我读到这可以通过在测试文件中包含requiresessions_helper来实现,但我仍然收到错误NameError:undefinedlocalvariableormethod'my_preference'.我做错了什么?require'test_helper'require'sessions_hel
我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie