分布式系统常用命令

Zookeeper启动

cd /app/zookeeper/bin
sh zkServer.sh start

执行以上脚本后,出现以下关键字,说明启动成功。
Starting zookeeper … STARTED
按以上步骤可以启动多个Zookeeper

cd /app/zookeeper/bin/
sh zkServer.sh stop
以下说明成功停止
STOPPED

kafka Broker启执行下面命令来启动kafka

cd /app/kafka
JMX_PORT=9997 nohup bin/kafka-server-start.sh config/server.properties &
执行以上脚本后,可以通过查看log判断服务是否正常启动。
tail -f nohup.out –n200
tail -f logs/server.log –n200
Log中无异常,出现以下关键字,说明启动成功。
[2014-03-17 15:27:53,426] INFO [Kafka Server 248], Started (kafka.server.KafkaServer)
    查看进程是否存在
ps -ef | grep Kafka

kafka Broker停止

cd /app/kafka
bin/kafka-server-stop.sh

Nimbus启动
授权

cd /app/jstorm
chmod -R 777 bin

执行下面命令来启动Nimbus:

cd /app/jstorm
nohup bin/jstorm nimbus &
通过/app/ jstorm/logs/nimbus.log文件查找错误。
通过下面命令查看进程是否正常启动
ps -ef|grep NimbusServer
ps -ef|grep nimbus
jps

Supervisor启动

执行下面命令:
cd /app/jstorm
nohup bin/jstorm supervisor &
通过/app/storm-supervisor/logs/supervisor.log文件查找错误。
通过下面命令查看进程是否正常启动
ps -ef|grep Supervisor
ps -ef|grep supervisor
jps

jstorm-ui 启动服务

cd /app/jstorm-ui/bin
./startup.sh
1.	查看进程,用下面命令查看进程
ps -ef|grep jstorm-ui
2.	用火狐访问http://xxxx:8088/ui,出现如下图页面
 

Nimbus停止

kill `ps aux | fgrep NimbusServer | fgrep -v 'fgrep' | awk '{print $2}'`
kill `ps aux | fgrep nimbus | fgrep -v 'fgrep' | awk '{print $2}'`

JStorm-ui停止

kill `ps aux | fgrep jstorm-ui | fgrep -v 'fgrep' | awk '{print $2}'`

supervisor停止
Supervisor会启动多个Worker进程,参见supervisor.slots.ports配置,下面是关闭所有Supervisor相关进程的命令:

kill `ps aux | fgrep Supervisor | fgrep -v 'fgrep' | awk '{print $2}'`
kill `ps aux | fgrep supervisor | fgrep -v 'fgrep' | awk '{print $2}'`

Mongodb启动命令

1.	cd /app
2.	tar xvf mongodb.tgz
3.	cd mongodb
4.	./mongod -f mongod.conf	#启动mongod服务
默认以后台服务方式运行,监听的端口是27017,数据文件目录db/,日志文件目录logs/,通过修改mongod.conf可以改变运行参数。

mongodb停止命令

1.	登录到1号机
2.	cd /app/mongodb
3.	./mongod -f mongod.conf --shutdown

linux修改主机名

[root@dubaoquan home]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.4.56.6   dubaoquan
[root@dubaoquan home]# cat /etc/sysconfig/network
NETWORKING=yes
#HOSTNAME=localhost.localdomain
HOSTNAME=dubaoquan

Linux用户root权限

创建用户,在root用户下执行下列命令
adduser test
passwd test
修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉
## Allows people in group wheel to run all commands
%wheel    ALL=(ALL)    ALL
然后在root下执行下列命令
usermod -g root test
修改完毕,现在可以用test帐号登录,然后用命令 su - ,即可获得root权限进行操作。
在分布式数据库的使用过程中,常用的操作命令涵盖了数据库的连接、状态查询、表结构管理、数据操作、权限控制以及性能优化等多个方面。以下是一些常见的操作命令分类及示例: ### 数据库连接与状态查询 分布式数据库通常支持标准的数据库连接方式,例如通过 JDBC、ODBC 或者数据库自带的客户端工具进行连接。在连接之后,可以执行一些基本的状态查询命令来获取当前数据库的运行信息。 - **查看当前连接数** 以 GBase 8c V5 为例,可以通过如下 SQL 语句查询当前数据库的连接数: ```sql SELECT count(*) FROM (SELECT pg_stat_get_backend_idset() AS backendid) AS s; [^3] ``` - **查看数据库节点状态** 在某些分布式数据库中,可以通过特定的管理命令或 SQL 函数查询节点的运行状态,例如是否在线、负载情况等。 ### 表结构管理 在分布式数据库中,表结构的设计和管理是关键环节,涉及到数据的分布策略、索引创建等。 - **创建分布式表** 分布式数据库通常支持在创建表时指定分布键(Distribution Key),以控制数据的分布方式。例如: ```sql CREATE TABLE orders ( order_id INT PRIMARY KEY, customer_id INT, order_date DATE ) DISTRIBUTE BY HASH(customer_id); ``` - **查看表结构** 可以使用 `DESCRIBE` 或 `DESC` 命令查看表的字段信息: ```sql DESCRIBE orders; ``` - **添加索引** 对于频繁查询的字段,可以创建索引以提升查询性能: ```sql CREATE INDEX idx_customer_id ON orders(customer_id); ``` ### 数据操作 数据操作包括插入、更新、删除和查询等基本操作。 - **插入数据** ```sql INSERT INTO orders (order_id, customer_id, order_date) VALUES (1, 1001, '2023-10-01'); ``` - **更新数据** ```sql UPDATE orders SET order_date = '2023-10-02' WHERE order_id = 1; ``` - **删除数据** ```sql DELETE FROM orders WHERE order_id = 1; ``` - **查询数据** ```sql SELECT * FROM orders WHERE customer_id = 1001; ``` ### 权限管理 分布式数据库通常也支持细粒度的权限控制,确保数据的安全性。 - **创建用户** ```sql CREATE USER app_user WITH PASSWORD 'secure_password'; ``` - **授予权限** ```sql GRANT SELECT, INSERT ON orders TO app_user; ``` - **撤销权限** ```sql REVOKE INSERT ON orders FROM app_user; ``` ### 性能优化与监控 在分布式数据库中,性能优化是一个持续的过程,涉及查询优化、索引调整、资源分配等多个方面。 - **分析表** 定期执行 `ANALYZE` 命令可以帮助优化器生成更高效的查询计划: ```sql ANALYZE orders; ``` - **查看执行计划** 使用 `EXPLAIN` 命令可以查看 SQL 语句的执行计划,帮助优化查询性能: ```sql EXPLAIN SELECT * FROM orders WHERE customer_id = 1001; ``` - **监控系统资源** 某些分布式数据库提供了内置的监控视图或命令,用于查看 CPU、内存、磁盘 I/O 等资源使用情况。 ### 数据备份与恢复 数据备份与恢复是保障数据安全的重要手段。 - **备份数据库** 可以使用数据库提供的备份工具进行全量或增量备份: ```bash gbase_backup -U gbase -d mydb -f /backup/mydb_backup.sql ``` - **恢复数据库** 在需要恢复时,可以使用相应的恢复命令将数据恢复到指定的时间点或状态: ```bash gbase_restore -U gbase -d mydb -f /backup/mydb_backup.sql ``` ### 缓存与数据库协同操作 在实际应用中,分布式数据库通常与缓存系统(如 Redis)协同工作,以提升系统的整体性能。 - **从缓存中获取数据** 在查询商品信息时,首先尝试从 Redis 缓存中获取数据: ```java public Map<String, String> getProductInfoFromCache(String productId) { return redis.hgetAll("product:" + productId); } ``` - **缓存未命中时从数据库查询并写入缓存** 如果缓存未命中,则从数据库中查询,并将结果写入缓存: ```java public Map<String, String> getProductInfoFromCacheOrDB(String productId) { Map<String, String> productInfo = redis.hgetAll("product:" + productId); if (productInfo == null || productInfo.isEmpty()) { productInfo = db.queryProductInfo(productId); if (!productInfo.isEmpty()) { redis.hmset("product:" + productId, productInfo); redis.expire("product:" + productId, 3600); // 设置缓存过期时间为1小时 } } return productInfo; } ``` - **数据库查询示例** 通过 JDBC 连接分布式数据库并执行查询操作: ```java public Map<String, String> queryProductInfoFromDB(String productId) { Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; Map<String, String> productInfo = new HashMap<>(); try { conn = dataSource.getConnection(); String sql = "SELECT * FROM products WHERE product_id = ?"; stmt = conn.prepareStatement(sql); stmt.setString(1, productId); rs = stmt.executeQuery(); if (rs.next()) { productInfo.put("name", rs.getString("product_name")); productInfo.put("price", rs.getString("price")); productInfo.put("stock", rs.getString("stock")); } } catch (SQLException e) { e.printStackTrace(); } finally { // 关闭资源 } return productInfo; } ``` ### 文件存储与数据库协同操作 在电商平台等场景中,商品图片等非结构化数据通常存储在分布式文件系统(如 HDFS)中,而元数据则存储在分布式数据库中。 - **将商品图片写入分布式文件系统** 使用 Hadoop 的 FileSystem API 将商品图片写入 HDFS: ```java public void saveProductImageToDFS(String imagePath, byte[] imageData) throws IOException { Configuration conf = new Configuration(); conf.set("fs.defaultFS", "hdfs://localhost:9000"); FileSystem fs = FileSystem.get(conf); Path path = new Path(imagePath); FSDataOutputStream out = fs.create(path); out.write(imageData); out.close(); fs.close(); } ``` - **将图片路径存储到数据库** 在将图片写入分布式文件系统后,可以将图片的路径存储到数据库中,以便后续查询: ```java public void saveImagePathToDB(String productId, String imagePath) { Connection conn = null; PreparedStatement stmt = null; try { conn = dataSource.getConnection(); String sql = "UPDATE products SET image_path = ? WHERE product_id = ?"; stmt = conn.prepareStatement(sql); stmt.setString(1, imagePath); stmt.setString(2, productId); stmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { // 关闭资源 } } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值