虚拟机中配置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下的一些包导进来
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~