Hadoop/hbase单机测试环境搭建记录

Hadoop/hbase单机测试环境搭建记录

  1. 基础设施

操作系统

CentOS Linux release 7.5.1804 (Core) (vmware虚拟机)

硬件

1核cpu 2G内存 20G硬盘

Hadoop版本

Hadoop2.6.5

Hbase

Hbase-1.2.8

Java

jdk"1.8.0_151"

 

  1. 安装顺序
  1. 配置linux免密登录 用于hadoop及hbase启动免认证
  2. 配置hostname   # vi /etc/hosts 修改本机ip 主机名 重启网络或重启系统
  3. 安装java
  4. 安装hadoop
  5. 安装配置Hbase

 

  1. 免密登录配置

 cd ~ # 进入当前用户目录

 ssh-keygen –t rsa # 如有提示 直接按回车生成密钥对

 # 如root用户会在/root目录下生成.ssh 文件夹

 cat id_rsa.pub >> authorized_keys # 加入授权

 (ssh-copy-id –i ~/.ssh/id_rsa.pub [目标机器ip地址/主机名]   #授权远程机器登录)

  ssh localhost 测试,不需要密码登录即可登录即成功

##########

 id_rsa  ---- 私钥

 id_rsa.pub ---公钥

 authorized_keys -----授权登录主机的公钥

 known_hosts -----登录过已知的主机

 

#遇到的问题

 Q1: 设置了免密登录ssh还需要输入密码登录

 A1: 检查/var/log/secure 日志登录信息

 

 

 要求:用户所在home目录 、.ssh目录权限必须为700;.ssh/authorized_keys文件权限为600

 

  1. Linux  java安装

 Java8 下载地址 :

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

下载64位版本jdk-8u191-linux-x64-demos.tar.gz 拷到虚拟机

1)解压至/usr/local目录用于配置环境变量

# tar zxvf jdk-8u151-linux-x64.tar.gz –C /usr/local

2)配置环境变量 vi /etc/profile

 # JAVA_HOME

export JAVA_HOME=/usr/local/bin/jdk1.8.0_151

export PATH=$PATH:$JAVA_HOME/bin

3) source /etc/profile 使环境变量生效

测试 java 、javac 、jar 能正常使用即可

 

  1. Hadoop安装

 Hadoop下载地址 官方提供的镜像站http://www.apache.org/dyn/closer.cgi/hadoop/common

 # 下载安装包

 cd /usr/local

wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.6.5/hadoop-2.6.5.tar.gz

tar zxvf hadoop-2.6.5.tar.gz

解压进入生成的hadoop-2.6.5目录中

cd hadoop-2.6.5/etc/hadoop

#设置hadoop-env.sh

找到# The java implementation to use.这句话,在下面添加如下内容:

#export JAVA_HOME=${JAVA_HOME}

export JAVA_HOME=/usr/lib/java/jdk1.8.0_11

export HADOOP_HOME=/usr/lib/hadoop/hadoop-2.7.4

export PATH=$PATH:/usr/lib/hadoop/hadoop-2.7.4/bin

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

执行source /usr/lib/hadoop/hadoop-2.7.4/etc/hadoop/hadoop-env.sh,使得环境变量生效

#配置环境变量 vi /etc/profile

# Hadoop Setting

export HADOOP_HOME=/usr/local/hadoop-2.6.5

export HADOOP_MAPRED_HOME=$HADOOP_HOME

export HADOOP_COMMON_HOME=$HADOOP_HOME

export HADOOP_HDFS_HOME=$HADOOP_HOME

export YARN_HOME=$HADOOP_HOME

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

export HADOOP_INSTALL=$HADOOP_HOME

验证是否成功,如下图

# 配置相关XML文件

vim hadoop-2.6.5/etc/hadoop/core-site.xml(hadoop全局配置)

内容如下

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://node2:9000</value>    ///node2 为配置的主机名

</property>

<property>

<!—用于设置hadoop临时数据目录-->

<name>hadoop.tmp.dir</name>

<value>/root/hadoop/tmp</value>

</property>

</configuration>

 

vim hadoop-2.6.5/etc/hadoop/hdfs-site.xml(设置保存数据副本数)

<configuration>

<!--指定hdfs保存数据的副本数量-->

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

</configuration>

 

# 设置MapReduce

cd /usr/lib/hadoop/hadoop-2.7.4/etc/hadoop

cp mapred-site.xml.template mapred-site.xml

vi mapred-site.xml(MapReduce的配置)

 

<configuration>

<!--告诉hadoop以后MapReduce运行在YARN上-->

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

</configuration>

 

# 设置YARN

vi yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->

<!--nomenodeManager获取数据的方式是shuffle-->

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

</configuration>

 

# 格式化hdfs文件系统

/usr/local/hadoop-2.6.5/bin/hadoop namenode –format (配置环境变量可直接输hadoop命令)

看到Exiting with status 0 表示格式化成功 如为1 可能为上述xml配置问题

 

# 启动hadoop(hdfs和yarn)

 Hadoop-2.6.5/sbin/start-all.sh 启动start-all.sh

 Hadoop-2.6.5/sbin/stop-all.sh 停止服务

 

# 用jps 查看 jvm进程

使用web查看Hadoop运行状态

http://[master机器ip]:50070

 

 

使用web查看集群状态

http://机器ip:8088

 

可能会遇到的问题

Q1:如果你多次进行了hdfs的格式化操作,可能会无法启动datanode,原因是id不一致,一般的解决方法为将namenode clusterID和datanode clusterID改成一样的就行了。修改的文件为/tmp/hadoop-root/dfs/下的name or data文件下的VERSION里的内容

Q2: hadoop fs -ls报“WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable”

A2:以前官网会提供32位的安装包,但目前提供的下载包为64位的,在linux 32位系统下安装后会一直提示错误“WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable ”,但官网又不提供32位系统下的安装包,所以我们只能自己编译打包源码。

大家可以到$HADOOP_HOME/lib/native下,查看文件libhadoop.so.1.0.0,里面会显示Hadoop的位数,官网下载好的显示是64位的,截图如下:

如果你是64位操作系统,可以直接跳到第二步。

在hadoop-2.6.5/etc/hadoop/hadoop-env.sh 中添加

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export  HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

source hadoop-env.sh生效

 

  1. Hbase安装

此处安装使用hbase-1.2.8版本

下载地址http://hbase.apache.org/downloads.html

下载hbase-1.2.8-bin.tar.gz包

tar zxvf hbase-1.2.8-bin.tar.gz

进入解压后的目录

cd hbase-1.2.8/conf

# 设置基础环境变量

vi hbase-env.sh

添加export JAVA_HOME=/usr/local/bin/jdk1.8.0_151

# 设置全局变量

vi hbase-site.xml

<configuration>

 <property>

      <name>hbase.tmp.dir</name>

      <value>/usr/local/hbase/hbaseData</value>

   </property>//hbase临时文件目录

   <property>

      <name>hbase.rootdir</name>

      <value>hdfs://node2:9000/hbase</value>

   </property>//在hdfs访问路径

   <property>

   <name>hbase.zookeeper.quorum</name> <!-- list of  zookooper -->

   <value>node2</value>

  </property>

   <property>

   <name>hbase.cluster.distributed</name> <!-- 是否分布式部署 -->

   <value>true</value>

  </property>

</configuration>

 

# 启动hbase

cd Hbase-1.2.8/bin

./start-hbase.sh

运行成功结果

相关日志在hbase-1.2.8/logs目录

 

测试 hbase-1.2.8/bin/hbase shell

 

测试hadoop fs -ls /hbase

Hbase的web界面

http://机器ip:16010  (早期版本端口为60010 。HBASE1.0之后的版本web端访问的接口变更为16010

 

  1. 附录

# hadoop 与Hbase支持版本信息

 

 

参考资料

常见问题 :https://www.jianshu.com/p/304c2a53e182

Hadoop官方文档 :http://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-common/ClusterSetup.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值