本文介绍在windows下配置hardoop和hbase:
目录
准备版本
- Java:jdk1.8.0_231。
- Hadoop:3.2.3。阿里云开源镜像站资源目录
- Hbase:2.3.7。https://archive.apache.org/dist/hbase/2.3.7/hbase-2.3.7-bin.tar.gz
JDK从Oracle官网下载,hadoop从阿里镜像站下载,hbase从apache存档中下载。Hadoop和Hbase一定要是上面的版本,否则不能联通。官网Apache HBase ™ Reference Guide这里介绍的兼容性有时不对,如本文写作时20220512下载了hadoop3.3.2和hbase2.4.12,二者不能搭配,Hbase启动会报错“java.lang.IllegalArgumentException: object is not an instance of declaring class”。
所有文件下载后解压到如下目录:(setEnv.bat和hadoop-workdir为后续创建)
配置环境
配置环境有两种方式。
第一种,设置windows环境变量JAVA_HOME、HADOOP_HOME、HBASE_HOME,并将%JAVA_HOME%\bin、%HADOOP_HOME%\bin、%HADOOP_HOME%\sbin、%HBASE _HOME%\bin、%HBASE _HOME%\conf添加到PATH。此方式优点是可全局方便的调用各命令,缺点是可能会影响到其他应用。
第二种,编写一个批处理,并用批处理启动相应的程序。此方式优点是不影响其他应用,确定是调用命令时需要新设置环境。
下文按第二种方式进行配置。首先在G:\hadoop目录下编写setEnv.bat如下:
echo 设置环境变量 set HADOOP_ROOT=g:\hadoop set JAVA_HOME=%HADOOP_ROOT%\jdk1.8.0_231 set HADOOP_HOME=%HADOOP_ROOT%\hadoop-3.2.3 set HBASE_HOME=%HADOOP_ROOT%\hbase-2.3.7 set PATH=%JAVA_HOME%\bin;%HADOOP_HOME%\bin;%HADOOP_HOME%\sbin;%HBASE_HOME%\bin;%HBASE_HOME%\conf;%PATH% |
配置hadoop
- 替换bin目录下的文件,否则windows下无法启动hadoop
- 从https://gitee.com/chen_yu_x/winutils(国内网络较快)或GitHub - cdarlint/winutils: winutils.exe hadoop.dll and hdfs.dll binaries for hadoop windows下载hadoop的windows工具。
- 用winutils下hadoop-3.2.2目录下的bin目录,替换%HADOOP_HOME%下的bin目录
-
把%HADOOP_HOME%\share\hadoop\yarn\timelineservice\hadoop-yarn-server-timelineservice-3.2.3.jar复制到%HADOOP_HOME%\share\hadoop\yarn\lib目录下, 解决TimelineCollectorManager报错问题。
- 修改%HADOOP_HOME%\etc\hadoop\core-site.xml配置文件。注意目录的配置方式。
<configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/g:/hadoop/hadoop-workdir</value> </property> </configuration> |
4. 修改%HADOOP_HOME%\etc\hadoop\hdfs-site.xml配置文件。注意目录的配置方式。
<configuration> <property> <name>dfs.namenode.name.dir</name> <value>file:/g:/hadoop/hadoop-workdir/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/g:/hadoop/hadoop-workdir/dfs/data</value> </property> </configuration> |
5. 在命令下进入g:\hadoop目录,执行“setEnv.bat”设置环境变量,执行结果示意如下:
6. 执行“hdfs namenode -format”对hadoop进行初始化,执行后显示内容示例如下:
7. 使用“start-all”命令启动hadoop,会显示如下的令行窗口。如有报错参见下文9.a。
8. 查看hadoop启动情况:http://localhost:9870/dfshealth.html#tab-overview
9. 使用“stop-all”停止hadoop服务。命令行显示如下,其他四个命令行窗口关闭。
10. 其他
- 如遇内存不足问题,可以修改%HADOOP_HOME%\etc\hadoop\hadoop-env.cmd批处理,在文件开头添加“set HADOOP_HEAPSIZE=200”。
- 如果仅为了启动hadoop,也可以跳过第3、4步的配置修改,此时hadoop会在当前盘符下创建tmp文件夹来存储数据。对本例来说是g:\tmp目录。
配置hbase
- 复制%HBASE_HOME%\lib\client-facing-thirdparty到%HBASE_HOME%\lib目录下。
- 修改%HBASE_HOME%\conf\hbase-site.xml,在configuration下添加如下配置:分别用来指定绑定ip地址和hadoop服务地址。
…………………… <property> <name>hbase.master.ipc.address</name> <value>0.0.0.0</value> </property> <property> <name>hbase.regionserver.ipc.address</name> <value>0.0.0.0</value> </property> <property> <name>hbase.rootdir</name> <value>hdfs://localhost:9000/hbase</value> </property> …………………… |
3. 在%HBASE_HOME%\conf\hbase-env.cmd批处理中添加如下配置,让HBase自己进行集群管理。
…………………… set HBASE_MANAGES_ZK=true …………………… |
4.切换到%HBASE_HOME%\bin目录下执行start-hbase。
4.在命令行下对hbase进行操作
- 从Download下载jansi-1.18.jar,并放到%HBASE_HOME%\lib目录下
- 执行“hbase shell”命令,界面示意如下:
3. 执行“ create 'test','cf' ”命令,创建表
6. 点击http://localhost:16010/master-status从浏览器查看hbase运行情况
7. 其他
- 使用“stop-hbase”和“hbase master stop --shutDownCluster”命令停止hbase运行。
- 在hbase shell界面下用exit命令退出。
参考资料
- Apache Hadoop
- Apache HBase ™ Reference Guide
- Windows环境下hadoop安装和配置详细步骤(图文)_yujkss的博客-CSDN博客_hadoop windows
- win10启动hadoop时遇到的坑_coder_szc的博客-CSDN博客
- 史上最详细的hadoop安装教程_新生代农民的博客-CSDN博客_hadoop安装
- hadoop启动报错: java.lang.NoClassDefFoundError:/org/apache/hadoop/yarn/server/timelineCollectorManager_梁云亮的博客-CSDN博客
- hbase与hadoop版本兼容问题,强烈谴责hadoop生态圈耦合性_jinluming19的博客-CSDN博客_hbase版本兼容