准备条件:已经安装jdk且已经配置了环境变量JAVA_HOME

hadoop跟hbase的版本是有对应关系的,不能乱搭配,可以在这个网址里查看:

https://hbase.apache.org/book.html#java

安装hadoop

1、下载赛hadoop

https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.1.1/hadoop-3.1.1.tar.gz

下载好后解压,这里以解压到d盘为例,则hadoop的路径为:

D:\hadoop-3.1.1

2、下载hadoop的windows组件

下载以下git路径下的所有文件并覆盖到hadoop安装目录的bin目录下的所有文件:

有很多个版本,请自行选择:

https://github.com/steveloughran/winutils/tree/master/hadoop-3.0.0/bin

https://github.com/selfgrowth/apache-hadoop-3.1.1-winutils

https://github.com/s911415/apache-hadoop-3.1.3-winutils

3、配置hadoop的环境变量

增加HADOOP_HOME为D:\hadoop-3.1.1

增加Path的以下两个环境变量:

1、%HADOOP_HOME%\bin

2、%HADOOP_HOME%\sbin

在CMD中使用hadoop version命令测试配置是否正常:

4、配置hadoop为本地分发

1、编辑etc\hadoop目录下的core-site.xml文件:

<configuration>
	<property>
        <name>hadoop.tmp.dir</name>
        <value>/D:/hadoop-3.1.1/workspace/tmp</value>
    </property>
    <property>
        <name>dfs.name.dir</name>
        <value>/D:/hadoop-3.1.1/workspace/name</value>
    </property>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

2、编辑etc\hadoop目录下的hdfs-site.xml文件:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>/D:/hadoop-3.1.1/workspace/data</value>
    </property>
</configuration>

3、编辑etc\hadoop目录下的mapred-site.xml文件:

<configuration>
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
	<property>
		   <name>mapred.job.tracker</name>
		   <value>hdfs://localhost:9001</value>
	</property>
</configuration>

4、编辑etc\hadoop目录下的yarn-site.xml文件:

<configuration>
   <property>
       <name>yarn.nodemanager.aux-services</name>
       <value>mapreduce_shuffle</value>
    </property>
    <property>
       <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
       <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
</configuration>

5、格式化节点

在cmd窗口执行命令:hdfs namenode -format

6、启动并访问测试

进入Hadoop的sbin目录下执行start-dfs.cmd启动Hadoop:

使用jdk的jps工具查看相关的hadoop进程是否启动车成功:

访问:http://localhost:9870

访问:http://localhost:8088

安装HBase

1、下载hbase2.2.6

https://hbase.apache.org/downloads.html

https://archive.apache.org/dist/hbase/

此处教程的存放目录是:D:\hbase-2.2.6\

2、配置环境变量

HBASE_HOME:D:\hbase-2.4.17

HBASE_CLASSPATH:D:\hbase-2.4.17\conf

HBASE_BIN_PATH:D:\hbase-2.4.17\bin

添加path环境变量:%HBASE_HOME%\bin

3、修改配置

(1)conf\hbase-env.cmd文件:

JAVA_HOME=D:\Java\jdk1.8.0_351
HBASE_MANAGES_ZK=true

(2)conf\hbase-site.xml

<configuration>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>false</value>
    </property>
	<property>
        <name>hbase.tmp.dir</name>
        <value>/D:/hbase-2.2.6/tmp</value>
    </property>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://localhost:9000/hbase</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>127.0.0.1</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/D:/hbase-2.2.6/zoo</value>
    </property>
    <property>
        <name>hbase.unsafe.stream.capability.enforce</name>
        <value>false</value>
    </property>
</configuration>

4、启动hbase

运行:bin\start-hbase.cmd

5、访问web界面

http://127.0.0.1:16010/master-status

6、进入hbase命令行模式

执行:hbase shell

使用以下命令创建数据表测试是否正常:

create 'student','Sname','Ssex','Sage','Sdept','course'
到web后台中查看是否产生对应的表:

到此结束,享受您的大数据开发之旅吧!

坑合集:

hadoop的data路径设置错误

如果运行start-hbase后hadoop和hbase出现“could only be written to 0 of the 1 minReplication nodes,there are 0 datanode(s) running”,一般是配置文件的data目录配置错误,则可以采取如下办法解决:

1、先用stop-all脚本关闭所有hadoop服务

2、删除hadoop的logs目录和data数据(配置文件里的tmp和data目录)

3、检查hdfs-site.xml配置文件

4、重新执行hdfs格式化命令:hadoop namenode -format

5、使用start-all启动hadoop

6、再次使用start-hbase命令启动hbase即可

hbase的节点错误

启动hbase出现“Master startup cannot progress, in holding-pattern until region onlined.”提示:

则可以采取暴力删除所有节点的方式,即删除hbase中的zoo目录后重启即可,或使用以下命令删除也可以:hbase zkcli -server localhost:2181(未测试)

无法运行hbase shell

无法运行hbase shell命令,出现如下提示:

因为hbase版本过高,降低一点即可,目前网友反应1.4.9和2.2.6版本下没有这个问题。

运行hbase shell缺少类

运行hbase shell提示:java.lang.NoClassDefFoundError: Could not initialize class org.fusesource.jansi.internal.Kernel32

到这里 https://mvnrepository.com/artifact/org.fusesource.jansi/jansi/1.4 下载jar包放进去hbase的lib目录中即可。

没有设置hbase.unsafe.stream.capability.enforce

如果你遇到Please check the config value of ‘hbase.wal.dir’ and ensure it points to a FileSystem mount that has suitable capabilities for output streams

请确保hbase-site.xml中有如下配置:

	<property>
		<name>hbase.unsafe.stream.capability.enforce</name>
		<value>false</value>
	</property>