我在同一区域中有2个Google Compute Engine虚拟机。如何将文件从一个VM移到另一个?
我在10个实例的bigtable中有一个小表(大小为100Mb)。当我尝试每1分钟扫描/获取一行时,通话延迟超过300毫秒。如果我打的是更频繁的呼叫,例如每秒一次,则延迟为50-60ms。我不确定如何改善低频通话的性能。这是预期的行为吗?还是我做错了什么。
这是我的测试代码。我为两个与大表的hbase客户端连接创建了一个执行程序。但是低频连接响应的速度要比进行更频繁呼叫的连接慢。
有什么建议么?
package com.bids;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.filter.FilterList;
import org.apache.hadoop.hbase.util.Bytes;
import org.fusesource.jansi.AnsiConsole;
public class BTConnectTest {
public static void main(String[] args) throws IOException, InterruptedException {
Configuration hBaseConfig = HBaseConfiguration.create();
hBaseConfig.set("google.bigtable.project.id", "xxxxxxx");
hBaseConfig.set("google.bigtable.cluster.name", "hbase-test1");
hBaseConfig.set("google.bigtable.zone.name", "us-central1-b");
hBaseConfig.set("hbase.client.connection.impl", "com.google.cloud.bigtable.hbase1_1.BigtableConnection");
ExecutorService executor = Executors.newSingleThreadExecutor();
final Connection bigTableConnection1 = ConnectionFactory.createConnection(hBaseConfig, executor); …Run Code Online (Sandbox Code Playgroud) 由于某些启动顺序问题,我在Google Compute Engine上的实例无法启动。
因此,我创建了另一个实例并重新配置了我的机器。
我的问题:
日志
[0.348577]密钥类型可信注册
[0.349232]密钥类型已加密注册
[0.349769] AppArmor:启用了AppArmor sha1策略哈希
[0.350351] ima:未找到TPM芯片,正在激活TPM旁路!
[0.351070] EVM:HMAC属性:0x1
[0.351549]幻数:11:333:138
[0.352077]块ram3:哈希匹配
[0.352550] rtc_cmos 00:00:将系统时钟设置为2015-12-19 17:06:53 UTC(1450544813)
[0.353492] BIOS EDD设备v0.16 2004年6月25日,找到0个设备
[0.354108] EDD信息不可用。
[0.536267]输入:AT Translated Set 2键盘为/ devices / platform / i8042 / serio0 / input / input2
[0.537862] md:在自动检测之前,等待所有设备可用
[0.538979] md:如果您不使用raid,请使用raid = noautodetect
[0.539969] md:自动检测RAID阵列。
[0.540699] md:已扫描0,并添加了0个设备。
[0.541565] md:自动运行...
[0.542093] md:...自动运行完成。
[0.542723] VFS:无法打开根设备“ sda1”或未知块(0,0):错误-6
[0.543731]请附加正确的“ root =”引导选项;这是可用的分区:
[0.545011]内核崩溃-不同步:VFS:无法在未知块(0,0)上安装根fs
[0.546199] CPU:0 PID:1 Comm:swapper / 0未污染3.19.0-39-generic#44〜14.04.1-Ubuntu
[0.547579]硬件名称:Google Google,BIOS Google 01/01/2011
[0.548728] ffffea00008ae140 ffff880024ee7db8 ffffffff817af92b … 我正在使用HBase API访问Google Cloud Bigtable,但每当我尝试删除列时:
Delete delete = new Delete(r.getRow());
delete.addColumn(CF, Bytes.toBytes(d.seqid()));
delete.addColumn(CF, COL_LEASE);
tasksTable.delete(delete);
Run Code Online (Sandbox Code Playgroud)
我得到了UnsupportedOperationException:
java.lang.UnsupportedOperationException: Cannot delete single latest cell.
at com.google.cloud.bigtable.hbase.adapters.DeleteAdapter.throwIfUnsupportedPointDelete(DeleteAdapter.java:85)
at com.google.cloud.bigtable.hbase.adapters.DeleteAdapter.adapt(DeleteAdapter.java:141)
at com.google.cloud.bigtable.hbase.adapters.HBaseRequestAdapter.adapt(HBaseRequestAdapter.java:71)
at com.google.cloud.bigtable.hbase.BigtableTable.delete(BigtableTable.java:307)
at queue.BigTableRowBackedQueue.poll(BigTableRowBackedQueue.java:54)
Run Code Online (Sandbox Code Playgroud)
我可以从HBase Java客户端中删除整行,并且可以使用HBase shell删除单个列.
如何在不删除Java客户端中的行的情况下删除列?
Bigtable行键场景避免热点?
一家公司需要您在 Google Bigtable 中创建一个架构,以便对过去 2 年的记录进行历史分析。传入的每条记录每 15 分钟发送一次,并包含设备的唯一标识符和数据记录。最常见的查询是针对给定设备在给定日期的所有数据。您应该使用哪种模式?
上面最好的选择是什么?
我们正在将服务器迁移到Google云计算引擎,并开始将云存储视为CDN选项.我通过开发者控制台上传了大约1,000个文件,但问题是所有用户的所有对象权限都设置为无.我找不到任何方法来编辑所有权限以授予所有用户读者访问权限.我错过了什么吗?
在GMock测试方法,我需要设置了参数变量的地址,这样的输出参数dequeue(),这是data指向变量ch:
MOCK_METHOD1(dequeue, void(void* data));
char ch = 'm';
void* a = (void*)&ch;
EXPECT_CALL(FQO, dequeue(_))
.WillOnce(/*here I need to set argument to a*/);
Run Code Online (Sandbox Code Playgroud)
我试图找出副作用,但一直出错.
我有一个Vagrant设置,提供两个Docker容器.Docker容器启动没有问题.在Vagrant VM中,我可以运行docker ps并看到两个容器都连接到正确的端口.如果我运行,docker logs XXX我会看到我的Redis和Mongo守护进程都在运行.但是从Vagrant盒子本身我无法telnet或访问任何正在运行的服务.我总是拒绝连接.如何让Vagrant VM看到Docker中运行的正在运行的服务?
我Vagrantfile看起来像:
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.host_name = "trusty"
config.vm.box_url = "https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box"
config.vm.box = "trusty64"
config.vm.network :private_network, ip: "192.168.10.12"
config.vm.network :forwarded_port, guest: 6379, host: 6379
config.vm.network :forwarded_port, guest: 27017, host: 27017
config.vm.provision "docker" do |d|
d.pull_images 'dockerfile/redis'
d.pull_images 'dockerfile/mongodb'
d.run 'dockerfile/redis', ports: ['6379:6379'], name: 'redis', expose: [6379]
d.run 'dockerfile/mongodb', ports: ['27017:27017'], name: 'mongodb'
end
end
Run Code Online (Sandbox Code Playgroud) 有没有办法使用 VHD 在 Google Cloud 上创建虚拟机实例?它看起来非常简单,并且在 Azure 云上有详细记录,但我在 G-Cloud 上找不到任何信息。
看来我在浪费时间在 Google Cloud 上重新创建服务器,而且我很快就失去了 Google Cloud 的价值。
来自GCS docs的以下片段:
强大的全局一致性还扩展到对象的删除(DELETE)操作和更改现有对象和存储区ACL的更新(PUT)操作.如果删除对象并收到成功响应,则立即尝试下载(GET)对象将导致404 Not Found状态代码.同样,如果更改对象或存储桶上的ACL并且收到成功响应,则新应用的对象或存储区ACL立即可用.
令人困惑的是,我认为全局一致性意味着我不会得到404 Not Found错误,对吧?
java ×2
bigtable ×1
boot ×1
boot2docker ×1
c++ ×1
disk ×1
docker ×1
filesystems ×1
gmock ×1
vagrant ×1
vagrantfile ×1
vhd ×1