Hadoop210伪分布式搭建及整合HBaseWord文档格式.docx
《Hadoop210伪分布式搭建及整合HBaseWord文档格式.docx》由会员分享,可在线阅读,更多相关《Hadoop210伪分布式搭建及整合HBaseWord文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
$HADOOP_HOME/sbin:
$HBASE_HOME/bin:
$MAVEN_HOME/bin
添加完成后,运行source/etc/profile使其立即生效
运行命令java-version查看是否安装成功,如下图所示则说明安装成功。
运行命令mvn-version查看是否安装成功,如下图所示则说明安装成功。
三、配置Hadoop文件
在hadoop2以后的版本中添加了一个新的功能叫yarn,是为了帮助mapreduce提高效率的,所以在配置时也需要配置它,以前是配置4个现在多了一个就是5个,分别是:
core-site.xml、hadoop-env.sh、hdfs-site.xml、mapred-site.xml和yarn-site.xml
1、编辑core-site.xml
<
property>
name>
fs.defaultFS<
/name>
value>
hdfs:
//master:
9000<
/value>
/property>
hadoop.tmp.dir<
file:
/usr/hadoop-2.1/tmp<
2、编辑hadoop-env.sh修改exportJAVA_HOME=/cloud/jdk1.6.0_24
3、编辑hdfs-site.xml
dfs.replication<
!
--默认三份副本-->
1<
dfs.permissions<
--关闭了权限认证-->
false<
dfs.webhdfs.enabled<
--开启web的hdfs-->
true<
<
dfs.datanode.data.dir<
--真实数据存放地址-->
/usr/hadoop/hadoop-2.1.0-beta/dfs/data<
dfs.namenode.name.dir<
--元数据存放地址-->
/usr/hadoop/hadoop-2.1.0-beta/dfs/name<
<
4、编辑mapred-site.xml
在hadoop2.1.0版本中没有这个文件,我们可以创建一个或者把mapred-site.xml.template复制一份去掉后缀即可。
configuration>
mapreduce.framework.name<
yarn<
/configuration>
5、编辑yarn-site.xml
yarn.resourcemanager.hostname<
master<
yarn.nodemanager.aux-services<
mapreduce.shuffle<
4、格式化HDFS
执行命令hadoopnamenode-format
执行结果如图所示,则说明执行成功。
需要说明的是,从2.0以后启动和停止hadoop的命令start-all.sh和stop-all.sh不建议使用,开始摒弃掉
取而代之的将使用start-dfs.sh和start-yarn.sh启动hadoop,详细请看官方说明,
分别运行start-dfs.sh和start-yarn.sh守护进程,如下图运行正常,访问localhost:
50070正常
访问资源管理界面localhost:
8088,hadoop从版本2.0以后界面功能变的很强大
5、配置SSH免登陆
生产ssh密钥
ssh-keygen-trsa
连续回车即可
在~/.ssh/目录下多了两文件(id_rsaid_rsa.pub)
cat~/.ssh/id_rsa.pub>
>
~/.ssh/authorized_keys
Hadoop2.1.0集成hbase-0.96.1.1-hadoop2-bin.tar
hbase-0.96.1.1-hadoop2-bin.tar可以去官网下载
2、将hbase-0.96.1.1-hadoop2-bin.tar解压到/cloud/下,配置环境变量,
修改/etc/profilevim/etc/profile
增加exportHBASE_HOME=/cloud/hbase
$HADOOP_HOME/bin:
$HBASE_HOME/bin
使其立即生效:
source/etc/profile
3、配置HBase
修改$HBASE_HOME/conf/hbase-site.xml
hbase.rootdir<
9000/hbase<
hbase.cluster.distributed<
hbase.zookeeper.quorum<
注意:
$HBASE_HOME/conf/hbase-site.xml的hbase.rootdir的主机和端口号与$HADOOP_HOME/conf/core-site.xml的fs.default.name的主机和端口号一致
在$HBASE_HOME/conf/regionservers文件增加
localhost
4、处理整合问题
由于hadoop-2.1.0是测试版,所以在和Hbase整合时会出问题,主要问题是版本不兼容,为了解决这个问题我们要使用hadoop-2.1.0中的jar包替换$HBASE_HOME/lib下的jar,但是不是全部替换。
但是进入hadoop-2.1.0的lib目录下发现竟然没有jar包,jar包去哪了呢?
?
,
只有一个native(本地库),话说apache真变态,他们把jar包放到一个叫$HADOOP_HOME/share/hadoop/的目录下了。
打开$HBASE_HOME/lib,我们看到了许多了jar包(116个),同时发现它里面的hadoop版本是hadoop-2.2的,而我们的hadoop版本是hadoop-2.1.0的。
主要替换4个文件夹中的jar包,分别是common、hdfs、mapreduce、yarn。
接下来就是去$HADOOP_HOME/share/hadoop/目录下,找到和$HBASE_HOME/lib下对应的jar,如果版本一样就不需要替换,如果不一样就用$HADOOP_HOME/share/hadoop/目录下的jar包替换$HBASE_HOME/lib目录下的jar包。
替换中发现有一个hadoop2.2-client.jar这个$HADOOP_HOME/share/hadoop/目录下没有,没有怎么办呢?
,留着肯定是个问题,直接删掉就行,替换完总共是115个包,删了一个。
只需要将$HADOOP_HOME/share/hadoop/目录下对应版本的jar包替换掉即可,不要随便删除$HBASE_HOME/lib/下的jar包,以免造成不必要的麻烦。
先启动Hadoop,后启动HBASE
#cd$HBASE_HOME/bin
#./start-hbase.sh
停止
#./stop-hbase.sh
安装成功后不算Jps,一共是8个节点,hadoop5个,Hbase3(HMaster、HQuorumpeer、HRegionServer)个。
YARN加载本地库抛出Unabletoloadnative-hadooplibrary解决办法
1、HADOOP的本地库(NativeLibraries)介绍
Hadoop是使用Java语言开发的,但是有一些需求和操作并不适合使用java,所以就引入了本地库(NativeLibraries)的概念,通过本地库,Hadoop可以更加高效地执行某一些操作。
目前在Hadoop中,本地库应用在文件的压缩上面:
∙zlib
∙gzip
在使用这两种压缩方式的时候,Hadoop默认会从$HADOOP_HOME/lib/native/Linux-*目录中加载本地库。
如果加载成功,输出为:
DEBUGutil.NativeCodeLoader-Tryingtoloadthecustom-builtnative-hadooplibrary...
INFOutil.NativeCodeLoader-Loadedthenative-hadooplibrary
如果加载失败,输出为:
INFOutil.NativeCodeLoader-Unabletoloadnative-hadooplibraryforyourplatform...usingbuiltin-javaclasseswhereapplicable
在Hadoop的配置文件core-site.xml中可以设置是否使用本地库:
hadoop.native.lib<
Hadoop默认的配置为启用本地库。
另外,可以在环境变量中设置使用本地库的位置:
exportJAVA_LIBRARY_PATH=/path/to/hadoop-native-libs
有的时候也会发现Hadoop自带的本地库无法使用,这种情况下就需要自己去编译本地库了。
在$HADOOP_HOME目录下,使用如下命令即可:
antcompile-native
编译完成后,可以在$HADOOP_HOME/build/native目录下找到相应的文件,然后指定文件的路径或者移动编译好的文件到默认目录下即可。
2、问题原因
用官方的Hadoop2.1.0-beta安装后,每次hadoop命令进去都会抛出这样一个Warning
WARNutil.NativeCodeLoader:
Unabletoloadnative-hadooplibraryforyourplatform...usingbuiltin-javaclasseswhereapplicable
在/etc/profile文件设置logger级别,看下具体原因
exportHADOOP_ROOT_LOGGER=DEBUG,console
在使用java代码操作时也出现这个问题:
wrongELFCLASS32,难道是加载的so文件系统版本问题?
so文件位置:
$HADOOP_HOME/lib/native/
执行命令查看libhadoop.so.1.0.0
命令:
filelibhadoop.so.1.0.0
输出信息:
libhadoop.so.1.0.0:
ELF32-bitLSBsharedobject,Intel80386,version1(SYSV),dynamicallylinked,notstripped
原来直接从apache镜像中下载的编译好的Hadoop版本nativelibrary都是32版本的,如果要支持64位版本,必须自己重新编译,这就有点坑爹了,要知道几乎所有的生产环境都是64位的OS
YARN官方对于nativelibrary的一段话验证了这一点
“Thepre-built32-biti386-Linuxnativehadooplibraryisavailableaspartofthehadoopdistributionandislocatedinthelib/nativedirectory”
重新checkoutsourcecode
http:
//svn.apache.org/repos/asf/hadoop/common/tags/release-2.1.0-beta/
之所以要使用maven的原因就在这。
加上编译native的选项,编译时会根据当前的操作系统架构来生产相应的native库
mvnpackage-Pdist,native-DskipTests-Dtar
再去native文件下查看所有的filetype,已经都是64位版的了,替换线上文件,WARNING消除
整合成功。