虚拟机中配置Hadoop与Hbase

虚拟机配置Hadoop HBase

物理机系统:windows10

虚拟机系统:ubuntu16

目标:在虚拟机上搭建hadoop+hbase,物理机上通过java代码访问

Hadoop搭建

根据官网上的guide,可以搭建出一个单节点的hadoop集群

这里按照配置后,如果没有手动stop dfs与yarn,再次启动虚拟机时可能会发生,hdfs的web页面(访问9870端口)无法访问,但通过jps可以看到namenode,这时候解决办法是重新格式化namenode后启动dfs

HBase

官网教程

使用的也是单节点下的hbase,其实这个hbase可以不依赖Hadoop,而是利用本机的文件系统,这里为了简单起见,使用这个单节点的hbase

物理机访问

在虚拟机里配好前两个后,可以在虚拟机里访问

  • localhost:9870
  • localhost:8088
  • localhost:16010

这三个端口分别对应hdfs,yarn,hbase的页面

在虚拟机里终端输入 ifconfig,查找到虚拟机的ip

在物理机中用ip+端口应该也是能访问到对应的页面的

但是测试后发现,hbase可以连接上,但是hdfs连不上,telnet ip 9000也访问不到

通过sudo netstat -tpnl查看端口后,我们发现9000端口对应的ip是127.0.0.1,而不是0.0.0.0,所以只允许从localhost访问

这里就要改一下hdfs的配置了

在hdfs-site.xml中,修改默认FS的url配置为

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop-master:9000</value>
    </property>
</configuration>

同时修改/etc/hosts,添加0.0.0.0 hadoop-master

修改后重启hdfs,就可以从物理机访问hdfs了

Java API连接

Hbase

在写好的Hbase工具类后,需要配置conf

    public static Configuration conf;

    static {
        conf = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum","192.168.221.135");  //hbase 服务地址
        conf.set("hbase.zookeeper.property.clientPort","2181");
    }

这里配置对应的zookeeper ip即可

建表,删除等需要admin的操作,需要用HbaseAdmin

Connection connection = ConnectionFactory.createConnection(conf);
HBaseAdmin admin = (HBaseAdmin) connection.getAdmin();

Hadoop

        Configuration conf=new Configuration();
        conf.set("fs.defaultFS","hdfs://192.168.221.135:9000");
        System.setProperty("HADOOP_USER_NAME","chuyuxuan"); //设置用户身份,以root用户,否者没有权限
        FileSystem fs =FileSystem.get(conf);

这里在访问hdfs时,由于hadoop对windows的支持不太好,所以需要额外配置

这里的配置用户名就是搭建hadoop的用户名,否则会报permission denied

依赖的包需要手动把hadoop/share下的一些包导进来

posted @ 2020-04-24 18:58  Geraltz'Rivia  阅读(508)  评论(0编辑  收藏  举报