Windows环境安装Hadoop|HBase
1、前提知识
1、HBase 是构建在 HDFS 之上的,它能够为大型表提供快速的记录查找和更新。HBase 在内部将数据放入带索引的"存储文件"中以便于快速查找,而这些文件存放在 HDFS 上。2、HBase的伪分布模式是依赖于HDFS的,因此在安装HBase之前需要安装匹配版本的Hadoop。3、此篇文章搭建版本:hadoop-3.1.4、hbase-2.2.7、
2、Hadoop搭建
Hadoop版本为hadoop-2.8.4 下载链接: http://hadoop.apache.org https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/ hadoopon windows-master.zip {能支持在windows运行hadoop的工具} 下载链接: 链接: https://pan.baidu.com/s/1ojjEpp75DgZuEgmPcEtP1w 提取码: f5js 使用hadooponwindows-master的bin和etc替换hadoop2.7.7的bin和etc
2.1、Hadoop搭建步骤
1、解压安装包,到指定目录1-1、比如:D:\hadoop2、环境变量的设置4-1、添加HADOOP_HOME: D:\hadoop [注意:不要带有空格的路径名下,否则会报找不到JDK错误]4-2、添加PATH:;%HADOOP_HOME%\bin;%HADOOP_HOME%\lib;3、修改启动类文件3-1、hbase-env.cmd,指定JAVA_HOME3-2、修改示例set JAVA_HOME=D:\Java\jdk1.8.0_1714、修改配置文件[\etc\hadoop目录下]4-1、修改hdfs-site.xml文件4-1-1、修改路径为hadoop下的namenode和datanode4-1-2、修改示例:dfs.namenode.name.dir/E:/Hadoop2.7.7/hadoop-2.7.7/data/namenodedfs.datanode.data.dir/E:/Hadoop2.7.7/hadoop-2.7.7/data/datanode<configuration><!-- 这个参数设置为1,因为是单机版hadoop --><property><name>dfs.replication</name><value>1</value></property><!-- 注意:windows目录路径要改成使用正斜杠,且磁盘名称最前面也需要一个正斜杠 --><property><name>dfs.namenode.name.dir</name><value>/E:/tools/hadoop-3.1.2/hadoop-3.1.2/data/dfs/namenode</value><property><name>dfs.datanode.data.dir</name><value>/E:/tools/hadoop-3.1.2/hadoop-3.1.2/data/dfs/datanode</value></property></configuration>4-2、修改core-site.xml4-2-1、修改示例:<configuration><!-- 存放临时数据的目录,即包括NameNode的数据 --><!-- 注意:windows目录路径要改成使用正斜杠,且磁盘名称最前面也需要一个正斜杠 --><property><name>hadoop.tmp.dir</name><value>/D:/dev/hadoop-2.5.2/workplace/tmp</value></property><property><name>dfs.name.dir</name><value>/D:/dev/hadoop-2.5.2/workplace/name</value></property><property><name>fs.default.name</name><value>hdfs://localhost:9000</value></property></configuration>4-3、修改mapred-site.xml(没有就将mapred-site.xml.template重命名为mapred-site.xml)文件 4-3-1、修改示例<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-4、修改yarn-site.xml4-4-1、修改示例<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><!-- nodemanager要求的内存最低为1024/1G --><property><name>yarn.nodemanager.resource.memory-mb</name><value>1024</value></property><property><name>yarn.nodemanager.resource.cpu-vcores</name><value>1</value></property></configuration>5、新建文件夹5-1、在E:\Hadoop-2.7.7目录下 添加tmp文件夹5-2、在E:/Hadoop2.7.7/hadoop-2.7.7/添加data和namenode,datanode子文件夹6、文件拷贝6-1、下载到的hadooponwindows-master.zip,解压,将bin目录(包含以下.dll和.exe文件)文件替换原来hadoop目录下的bin目录;6-2、把\hadoop\bin\hadoop.dll拷贝到 C:\Windows\System32文件夹中,不然在window平台使用MapReduce测试时报错。7、启动hadoop:7-1、启动format成功,进行节点格式化: {Hadoop的bin目录下}输入hdfs namenode -format,看到seccessfully就说明format成功7-2、启动hadoop集群: {Hadoop的sbin目录下}7-2-1、\hadoop\sbin\,输入start-all命令7-2-2、回启动四个窗口-- 这时会启动namenode,、datanode、resourcemanager、nodemanager8、测试8-1、打开cmd,输入hadoop version8-2、输入jsp,查看运行的所有节点8-3、访问hadoop的web界面http://localhost:500708-4、访问yarn的web界面,能正常展示,则说明搭建成功http://localhost:80889、关闭hadoop9-1、\hadoop\sbin\,输入stop-all命令
2.2、特殊情况-说明
1、解压压缩包时,报:无法创建符号链接,xxx,您可能需要以管理器身份运行WinRAR1-1、则用管理员身份进行解压,cd到压缩包所在文件夹下,执行下面的命令-- start winrar x -y hadoop-3.1.3.tar.gz2、解压完之后,查看解压目录的bin目录中,是否有winutis.exe和hadoop.dll文件2-1、https://github.com/s911415/apache-hadoop-3.1.0-winutils3、如果后续要安装Spark,那么最好安装和Spark版本对应的Hadoop版本查看hadoop/spark对应版本:http://spark.apache.org/downloads.html
2.3、HDFS操作测试-示例
1、创建目录:C:\Windows\system32> hadoop fs -mkdir hdfs://localhost:9000/my/C:\Windows\system32> hadoop fs -mkdir hdfs://localhost:9000/my/testinput2、上传文件:C:\Windows\system32> hadoop fs -put D:\test01.txt hdfs://localhost:9000/my/testinputC:\Windows\system32> hadoop fs -put D:\test02.txt hdfs://localhost:9000/my/testinput3、查询文件:C:\Windows\system32> hadoop fs -ls hdfs://localhost:9000/my/testinput
2.4、HDFS-自带Web UI管理页面
1、资源管理(http://localhost:8088/cluster)2、节点管理(http://localhost:50070/dfshealth.html#tab-overview)
2.4.1、HDFS-自带Web UI管理页面-使用示例-查看上传的文件
2.5、Hadoop搭建-访问验证搭建连接测试
http://localhost:50070/dfshealth.html#tab-overviewhttp://localhost:8088/cluster
2.6、Hadoop搭建-遇错记录
1、问题1:1-1、报错信息:ERROR datanode.DataNode: Exception in secureMainorg.apache.hadoop.util.DiskChecker$DiskErrorException: Too many failed volumes - current valid volumes: 0, volumes configured: 1, volumes failed: 1, volume failures tolerated: 01-2、解决方式:删除提前手动建立的data文件夹,让hadoop自己创建。2、问题2:2-1、报错信息:java.lang.NoClassDefFoundError:/org/apache/hadoop/yarn/server/timelineCollectorManager ,2-2、解决方式:2-2-1、这个错误主要是缺少timelineCollectorManager的jar包,下载该架包,放到yarn下的lib文件夹下即可。-- jar依赖下载地址:https://mvnrepository.com2-2-2、或者hadoop3.0.3 版本将share\hadoop\yarn\timelineservice\hadoop-yarn-server-timelineservice-3.0.3.jar 放到share\hadoop\yarn\lib 下也可以。3、问题3:3-1、报错信息:The ServiceName: mapreduce.shuffle set in yarn.nodemanager.aux-services is invalid.3-2、问题原因:yarn.nodemanager.aux-services的值在高版本的Hadoop中只能包含a-zA-Z0-9_,不能以数字开头.3-3、解决方式:修改yarn-site.xml配置,改为:<name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value>4、问题4:4-1、报错信息:java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows4-2、问题原因:hadoop.dll文件跟系统不匹配4-3、解决方式:4-3-1、主动代码加载hadoop.dll文件,排查是否为32位还是64位的文件-- 代码示例public static void main(String[] args) {try {System.load("D:/hadoop/hadoop-3.1.4/bin/hadoop.dll");} catch (UnsatisfiedLinkError e) {System.err.println("Native code library failed to load.\n" + e);System.exit(1);}}4-3-2、下载与系统匹配的hadoop.dll文件,复制到hadoop.xxx/bin和x:/Windows/System32文件夹下。-- https://github.com/search?q=winutils5、问题5:5-1、报错信息:无法访问localhost:500705-2、解决方式:修改hdfs-site.xml,增加如下配置:<property><name>dfs.http.address</name><value>localhost:50070</value></property>6、问题6:6-1、报错信息:启动yarn nodemanager失败6-2、问题原因:是winutil文件夹需要跟hadoop版本3.1.1一致的源码编译的包6-3、解决方式:到GITHUB找到跟Hadoop同一版本的winutil文件
2.7、Hadoop搭建-博客资料
https://www.cnblogs.com/yifengjianbai/p/8258898.html https://baijiahao.baidu.com/s?id=1631225218387105313&wfr=spider&for=pc https://blog.csdn.net/qinlan1994/article/details/90413243 https://blog.csdn.net/qq_35535690/article/details/81976032 https://www.jianshu.com/p/aa8cfaa26790 https://zhuanlan.zhihu.com/p/29362852
3、HBase搭建
下载的HBase版本为HBase-2.0.2 https://hbase.apache.org/downloads.html
3.1、HBase搭建步骤-简介
1、解压安装包,到指定目录1-1、比如:D:\hbase2、修改配置文件2-1、./hbase/conf/hbase-site.xml2-2、配置文件内容-示例<configuration><!-- hbase.cluster.distribute是指HBase以分布式模式进行,这个功能在win下不支持,写成false,否则无法启动 --><property><name>hbase.cluster.distributed</name><value>false</value></property><!-- 本地文件系统上的临时目录 --><property><name>hbase.tmp.dir</name><value>D:/hbase-2.2.7/tmp</value></property><property><name>hbase.unsafe.stream.capability.enforce</name><value>false</value></property><!-- 指向您的HDFS实例的地址 --><property><name>hbase.rootdir</name><value>hdfs://localhost:9000/hbase</value></property><property><name>hbase.zookeeper.property.dataDir</name><value>D:/hbase-2.2.7/zoo</value></property><property><name>hbase.cluster.distributed</name><value>false</value></property><!-- WAL提供商 --><property><name>hbase.wal.provider</name><value>filesystem</value></property><property><name>dfs.replication</name><value>1</value></property><!-- ZooKeeper集合中服务器的逗号分隔列表 --><property><name>hbase.zookeeper.quorum</name><value>127.0.0.1</value></property></configuration>3、修改启动类文件3-1、hbase-env.cmd,指定JAVA_HOME3-2、修改示例:set JAVA_HOME=${JAVA_HOME}#暂且先不用内置zookeeper#set HBASE_MANAGES_ZK=false4、环境变量的设置4-1、添加HABSE_HOME: D:\hbase4-2、添加PATH:;%HBASE_HOME%\bin5、启动HBase服务{启动没报错,则说明HBase环境搭建好了}5-1、注意:在启动HBase之前,得先启动Hadoop5-2、启动HBase服务:{D:\hbase-2.2.7\bin}-- start-hbase.cmd-- jps 查看是否存在HMaster-- 通过hadoop fs -ls/hbase查看,检查一下HDFS上是否有HBase产生的文件5-3、启动没报错,则说明安装成功6、退出HBase6-1、使用quit命令进行退出7、关闭Hbase服务7-2、在终端输入stop-hbse.cmd命令
3.2、Hbase搭建-遇错记录
1、问题1:1-1、报错信息:This file has been superceded by packaging our ruby files into a jar and using jruby's bootstrapping to invoke them. If you need to source this file fo some reason it is now named 'jar-bootstrap.rb' and is located in the root of the file hbase-shell.jar and in the source tree at 'hbase-shell/src/main/ruby'.1-2、解决方式:我使用的是hadoop3.1.4和hbase2.4.2,把hbase换成2.2.6解决。2、问题2:2-1、报错信息:[ERROR] Terminal initialization failed; falling back to unsupportedjava.lang.NoClassDefFoundError: Could not initialize class org.fusesource.jansi.internal.Kernel322-2、解决方式:缺少jansi-1.7.jar包导致的,下载jansi-1.7.jar包放到hbase-2.2.7\lib下,重新启动即可。2-2-1、jar包下载地址:https://mvnrepository.com/artifact/org.fusesource.jansi/jansi3、问题3:3-1、报错信息:This is not implemented yet. Stay tuned.3-2、问题原因:由于在windows环境启动时,不允许使用分布式的zk。3-3、解决方式:需要把上面配置文件./hbase/conf/hbase-site.xml中的hbase.cluster.distribute改成false即可。4、问题4:4-1、进行hbase shell操作时,报:SyntaxError: (hbase):6: syntax error, unexpected tSTRING_BEG4-2、考虑是命令语法的错误,检查命令语句:有没有缺失引号之类的。
3.3、HBase Shell操作验证-示例
1、HBase启动后,在xxx/bin目录下用cmd窗口操作2、Shell启动命令:hbase shell3、HBase Shell操作示例: {注意,表名,行,列都必须用[引号]引起来。}3-1、创建namespace-- create_namespace 'testspace'3-2、创建表3-2-1、创建表-语法:-- create '[namespace:]table_name'3-2-2、创建表-示例-- create 'testspace:testtable1',{NAME=>'f1',VERSIONS=>5}-- 在hbase中=>符号表示等于-- f1表示列簇-- VERSIONS=>5,表示同时能够存储的版本数-- [!!!]建表时要指定一个列簇,一个列簇就是一个大括号,可以指定多个列簇,一个大括号中只能指定一个NAME.3-3、插入数据3-3-1、插入数据-语法-- put '[namespace:]table_name','rowkey','列簇:列','插入的值'3-3-2、插入数据-示例-- put 'testspace:testtable1','20210506_10001','f1:name','zhangsan'-- '20210506_10001' : 代表rowkey-- 'f1:name' : 代表列族前缀+列限定符后缀-- 'zhangsan' :代表具体插入的值3-4、查询数据3-4-1、一个rowkey可能有多个列簇,可以指定列簇进行查询。3-4-2、查询数据-示例:-- get 'testspace:testtable1','20210506_10001'
3.4、HBase-自带Web UI管理页面-简介
1、HBase-自带Web UI管理页面-访问地址http://localhost:16010/master-status2、基本功能操作有:Master、Region Servers、tables、Logs
3.5、HBase搭建-博客资料
https://www.pianshen.com/article/25521893048/ https://baijiahao.baidu.com/s?id=1631231582763493960&wfr=spider&for=pc
4、HBase Shell-操作示例
#创建测试表create 'ngfe_test_data',{NAME=>'f',VERSIONS=>1}#查看表是否存在exists 'ngfe_test_data'#查看数据中所有的表list#查看指定表的列族信息#describe 命令描述了表的详细结构,包括有多少个列族、每个列族的参数信息,这些显示的参数都可以使用 alter 命令进行修改describe 'ngfe_test_data'#插入数据: rowkey是根据一定的规则生成的put '[namespace:]tableName','rowKey',columnFamily:column','columnValue','tempstamp'put 'ngfe_test_data','10a_123456','f:name','zhangsan'put 'ngfe_test_data','10a_123456','f:age','22'put 'ngfe_test_data','10a_123456','f:area','china'put 'ngfe_test_data','333_654321','f:name','wangwu'put 'ngfe_test_data','333_654321','f:age','25'put 'ngfe_test_data','333_654321','f:area','korea'#获取数据get 'ngfe_test_data','10a_123456'get 'ngfe_test_data','333_654321'#删除数据#delete: 最小粒度是单元格(Cell),#而且不能跨列族操作,如果需要删除表中所有列族在某一行的数据(删除表中一个逻辑行),则需要使用 deleteall 命令delete 'ngfe_test_data','10a_123456','f:name'delete 'ngfe_test_data','10a_123456'#其他,待续.......
