HbaseConfig.java 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package com.yihu.base.hbase.config;
  2. import org.apache.hadoop.hbase.HBaseConfiguration;
  3. import org.apache.hadoop.hbase.TableName;
  4. import org.apache.hadoop.hbase.client.*;
  5. import org.apache.hadoop.hbase.security.User;
  6. import org.apache.hadoop.hbase.util.Bytes;
  7. import org.apache.hadoop.security.UserGroupInformation;
  8. import org.slf4j.Logger;
  9. import org.slf4j.LoggerFactory;
  10. import org.springframework.beans.factory.annotation.Value;
  11. import org.springframework.boot.context.properties.ConfigurationProperties;
  12. import org.springframework.context.annotation.Bean;
  13. import org.springframework.context.annotation.Configuration;
  14. import org.springframework.data.hadoop.hbase.HbaseTemplate;
  15. import org.springframework.data.hadoop.hbase.TableCallback;
  16. import java.util.*;
  17. /**
  18. * @author Sand
  19. * @version 1.0
  20. * @created 2015.11.28 16:26
  21. */
  22. @Configuration
  23. @ConfigurationProperties(prefix = "hadoop")
  24. public class HbaseConfig{
  25. private static Logger logger = LoggerFactory.getLogger(HbaseConfig.class);
  26. private Map<String, String> hbaseProperties = new HashMap<>();
  27. public Map<String, String> getHbaseProperties(){
  28. return this.hbaseProperties;
  29. }
  30. @Value("${hadoop.user.name}")
  31. private String user;
  32. @Bean
  33. public org.apache.hadoop.conf.Configuration configuration() {
  34. Set<String> keys = new HashSet<>(hbaseProperties.keySet());
  35. for (String key : keys){
  36. String value = hbaseProperties.remove(key);
  37. key = key.replaceAll("^\\d{1,2}\\.", "");
  38. hbaseProperties.put(key, value);
  39. }
  40. org.apache.hadoop.conf.Configuration configuration = HBaseConfiguration.create();
  41. hbaseProperties.keySet().stream().filter(key -> hbaseProperties.get(key) != null).forEach(key -> {
  42. configuration.set(key, hbaseProperties.get(key));
  43. });
  44. return configuration;
  45. }
  46. @Bean
  47. public HbaseTemplate hbaseTemplate(org.apache.hadoop.conf.Configuration configuration){
  48. HbaseTemplate hbaseTemplate = new HbaseTemplate();
  49. hbaseTemplate.setConfiguration(configuration);
  50. try
  51. {
  52. logger.info("set System property for hbase ---",user);
  53. System.setProperty("HADOOP_USER_NAME", user);
  54. String tableName = "HealthProfile";
  55. //覆盖默认的配置文件
  56. org.apache.hadoop.conf.Configuration.addDefaultResource("core-site.xml");
  57. org.apache.hadoop.conf.Configuration.addDefaultResource("hbase-site.xml");
  58. Connection connection = ConnectionFactory.createConnection(configuration);
  59. logger.info("Hbase createConnection finished---",connection.getConfiguration());
  60. Admin admin = connection.getAdmin();
  61. boolean ex = admin.tableExists(TableName.valueOf(tableName));
  62. //判断是否存在
  63. if(ex)
  64. {
  65. hbaseTemplate.execute(tableName, new TableCallback<Object>() {
  66. @Override
  67. public Object doInTable(HTableInterface table) throws Throwable {
  68. Get get = new Get(Bytes.toBytes("connection-init"));
  69. Result result = table.get(get);
  70. return result;
  71. }
  72. });
  73. }
  74. admin.close();
  75. connection.close();
  76. }
  77. catch (Exception ex)
  78. {
  79. logger.info("Hbase createConnection failure",ex.getMessage());
  80. }
  81. return hbaseTemplate;
  82. }
  83. }