hivefans icon

list_regions

hivefans | PRO | 03/13/19 08:55:38 AM UTC | 0 ⭐ | 7513 👁️ | Never ⏰ | []
Ruby |

2.31 KB

|

None

|

0 👍

/

0 👎

def list_regions(table_name, region_server_name = "")
  admin = @hbase.admin(@hbase)
  admin_instance = admin.instance_variable_get("@admin")
  conn_instance = admin_instance.getConnection()
  cluster_status = admin_instance.getClusterStatus()
  hregion_locator_instance = conn_instance.getRegionLocator(TableName.valueOf(table_name))
  hregion_locator_list = hregion_locator_instance.getAllRegionLocations()
  table_max_file_size = (admin_instance.getTableDescriptor(TableName.valueOf(table_name)).getMaxFileSize()/1024/1024).ceil
  if table_max_file_size < 0
    table_max_file_size = (admin_instance.getConfiguration.getLong("hbase.hregion.max.filesize", 
5)/1024/1024).ceil
  end
  results = Array.new
  begin
    hregion_locator_list.each do |hregion|
      hregion_info = hregion.getRegionInfo()
      server_name = hregion.getServerName()
      if hregion.getServerName().toString.start_with? region_server_name
        startKey = Bytes.toString(hregion.getRegionInfo().getStartKey())
        endKey = Bytes.toString(hregion.getRegionInfo().getEndKey())
        region_load_map = cluster_status.getLoad(server_name).getRegionsLoad()
        region_load = region_load_map.get(hregion_info.getRegionName())
        region_store_file_size = region_load.getStorefileSizeMB()
        occupancy = (region_store_file_size*100/table_max_file_size).ceil
        region_requests = region_load.getRequestsCount()
        results << { "server" => hregion.getServerName().toString(), 
"name" => hregion_info.getRegionNameAsString(), "startkey" => startKey, "endkey" => 
endKey, "size" => region_store_file_size, "occupancy" => occupancy, 
"requests" => region_requests }
      end
    end
  ensure
    hregion_locator_instance.close()
  end
  @end_time = Time.now
  printf("%-45s | %-75s | %-10s | %-10s", "SERVER_NAME", "REGION_NAME", "SIZE(MB)", "REQ");
  printf("\n")
  for result in results
    printf("%-45s | %-75s | %-10s | %-10s", result["server"], result["name"], result["size"], result["requests"]);
      printf("\n")
  end
  printf("%d rows", results.size)
end
 
def filesize(size)
        units = ['MB', 'GB', 'TB', 'PB', 'EB']
 
        return '0.0 B' if size == 0
        exp = (Math.log(size) / Math.log(1024)).to_i
        exp = 6 if exp > 6
 
        '%.1f %s' % [size.to_f / 1024 ** exp, units[exp]]
end

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎