傻瓜式 Hadoop + Hbase 分布式安装教程

本教程不涉及任何原理性内容,可以作为使用手册,跟着走一遍即可顺利配好 Hadoop 分布式环境支持虚拟机,双系统,云服务器的配置

前提要求(请务必确认,不要直接跳到操作部分)

  1. 使用虚拟机务必保证开启桥接模式,并处于同一网段(同一局域网(校园网)或 WiFi 热点下),不要使用NAT等其他模式联网。
    虚拟机的桥接模式相当于模拟路由器,所以双系统是不能直接与虚拟机连接的(相当于缺少路由器),同 理,校园网(局域网)也无法直接跟云服务器(阿里云,腾讯云等)连接,所以
    要么全是云服务器
    要么全是虚拟机
    要么全是双系统
  2. 所有要连入分布式的节点(组成分布式系统的主机或者虚拟机)之间必须能互相连通。 比 如 有 三 台 电 脑 要 组 成 分 布 式 环 境 , 三 台 电 脑 的 IP 分 别 是 : 192.168.1.1;192.168.1.2;192.168.1.3
    那么,在任意主机上执行如下语句:
    ping 192.168.1.1
    ping 192.168.1.2
    ping 192.168.1.3
    应该都能看到有类似这样的结果出现icmp_seq=1 ttl=61 time=0.467 ms
    而不是 timeout
  3. 所有人用户名相同,考虑到不同用户名配置会出现各种问题(比较麻烦),请保持相同用户名,如hadoop
  4. 所有人的 Hadoop 和 Hbase 版本号应相同,如果不同可能会遇到一些问题,如果你可以自己解决的话可以保留自己的版本,不过为了照顾其他组员,建议统一使用相同版本。
    考虑到软件的发展,在这里使用的都是最新稳定版,经测试,无论是操作还是执行代码都没有问题。
    如果采用你们自己的版本,请务必确保版本统一,Hadoop 和 Hbase 互相支持,以下配置文件理论上也适用于旧版本,如果不确定或不太懂,请按照本教程来
    新版本和旧版本主要差在端口上,以下是日常会用到的端口的改动:
    Hadoop 的网页管理器端口从 50070(2.x版本)变成了 9870 (3.x版本)
    Hbase 的网页管理器端口从 60010(1.2.x版本)变成了16010(1.4.x及以后版本) Yarn 的网页管理器一直是 8088 端口
    网页管理器可以在你配置好后检查时使用,比较直观快捷。
    (所有端口都可以设置,本教程因为主打简单快速就不做特殊说明,有需要可以去查看官方文档:https://hadoop.apache.org/docs/ 找到你的版本之后进入查看即可)

开始操作

0. 用户名

所有人用户名保持相同,考虑到不同用户名配置会出现各种问题(比较麻烦),请保持相同用户名 本教程所有节点用户名均为 hadoop(实际上任意,这里为了方便,采用 hadoop)
如果用户名不同,可以手动修改用户名,鉴于直接修改用户名比较麻烦,这个教程是写给大象看的,此处采用更简 单的方法:新建用户
(如果你们小组的用户名已经统一,就不需要进行如下操作)
(如果你们小组的用户名已经统一,就不需要进行如下操作)
打开终端,依次输入如下指令

#(如果你们小组的用户名已经统一,就不需要进行如下操作)

# 添加用户
sudo adduser hadoop
# 之后会要求输入密码和验证密码
# 然后会询问添加一些信息,可以一直回车跳过
# 最后按一下 y 再回车就完成了创建用户的操作

# 将用户设置为管理员
sudo adduser hadoop sudo

# 之后请用新建的用户登录
su hadoop

所有操作需要在小组统一用户名下进行。

1.安装Java环境

Hadoop 基于 Java,为了保证其能正常运行,我们需要先安装 Java 环境
介于部分系统Java环境配置有各种问题,这里请所有节点重新完整安装一遍Java环境
(除非你能保证自己下文有关Java的配置不出错) 打开终端,依次输入

1	# 添加 Orcale Java 软件源
2	sudo add-apt-repository ppa:webupd8team/java
3	# 更新软件列表
4	sudo apt-get update
5	# 安 装 Java
6	sudo apt-get install oracle-java8-installer
7	# 期间需要用键盘的方向键和回车键同意许可(移动到 ok 然后按回车),之后等待即可
8	# 这一步因为网络的原因,可能有些慢,如果是虚拟机,此处可以考虑先切换成 NAT 模式联网,进行下载安装,
9	# 安装好后再切回桥接模式

安装完后,oracle-java,自动配置好JAVA_HOME变量,如果按照这种方式安装,下文中提到的所有JAVA_HOME环境变量均为 /usr/lib/jvm/java-8-oracle/jre/
本教程即采用这种方式安装 Java环境

2.配置Hosts

首先,我们要获取到所有节点的IP地址,在所有节点执行 ifconfig 观察结果:
在这里插入图片描述
不是 lo 的一行是你的外网连接,图中圈中部分是你的 IP 。小组内全部节点地址都要统计好,并做到人手一份。

接下来是 Hosts 的配置。打开终端,执行如下指令:

sudo gedit /etc/hosts
# 这里没有使用 vi,因为大多数人不熟悉 vi 的操作,在这里使用 gedit 代替
# 如果是云服务器或者特殊情况,没有图形界面,请把此处的 gedit 替换成 nano 或者 vi

# 在 hosts 中,localhost 的下面,添加你们小组全部人的 IP,格式是:IP 空格 主机名
# 举个例子,如果:
# 主节点(Master)IP 是 192.168.43.1
# 从节点(Slave1)IP 是 192.168.43.2
# 从节点(Slave1)IP 是 192.168.43.3
# (请事先决定好,让一个可靠的人作为主节点,其他主机都是从节点)

# 格式是:IP 空格 主机名
# 那么 hosts 就添加如下内容:
192.168.43.1	Master
192.168.43.2	Slave1
192.168.43.3	Slave2
# 此处务必小组全部成员跟着一起改
# 主节点起名叫 Master
# 从节点分别起名为 Slave1,Slave2...
# 格式是:IP 空格 主机名
# 小组成员 Hosts 保持一致

# 如果是云服务器配置,此处本机要用内网地址,其他的地址用外网

#之后保存退出。

因为 IP 地址随时间推移可能会变,所以务必记住如何修改 Hosts,如果出现“我昨天成功了,什么也没动今天怎么就失败了??”的情况,如果网络连接没有问题就基本是 Hosts 的问题。

3. 下载 Hadoop + Hbase

为了减少出错率,采用完全重装的方式,意味着以前的版本需要删除。(如果在之前的学习过程中注意了各个机器上hadoop和hbase的版本都保持一致,那么则不需要重新安装,只需更改配置文件即可,参考第5小节 核心配置)

# 查看当前是否有相关进程启动
jsp
# 如果有除了 jps 之外的其他进程在,可能是当前还在运行相关程序,请使用
/usr/local/hadoop/sbin/stop-all.sh
/usr/local/hbase/bin/stop-hbase.sh
# 关闭相关程序,再尝试删除,如果关不掉,请先使用
jps
# 列出当前运行的 Java 进程,然后用 kill + 进程ID 指令强制关闭,比如:
kill 1234

# 删除已经存在的 Hadoop 和 Hbase
sudo rm -r /usr/local/hadoop
sudo rm -r /usr/local/hbase

所有节点一次执行如下命令

# 移动到个人文件夹(以免因误操作删除掉系统文件)
cd ~/
# 下载 Hadoop & Hbase (需要一点时间,请耐心等待)
wget http://apache.claz.org/hadoop/common/hadoop-3.1.0/hadoop-3.1.0.tar.gz
wget https://archive.apache.org/dist/hbase/1.4.4/hbase-1.4.4-bin.tar.gz
# 解 压
sudo tar -zxf hadoop-3.1.0.tar.gz -C /usr/local/
sudo tar -zxf hbase-1.4.4-bin.tar.gz -C /usr/local/
# 删除用过的压缩包
rm hadoop-3.1.0.tar.gz
rm hbase-1.4.4-bin.tar.gz
# 改名 + 授予权限
cd /usr/local/
sudo mv hadoop-3.1.0/ hadoop/
sudo mv hbase-1.4.4-bin/ hbase/
sudo chown -R hadoop hadoop/
sudo chown -R hadoop hbase/ 

# 配置环境变量
sudo gedit ~/.bashrc
# 在除了第一行的任意地方添加如下内容:
export JAVA_HOME="/usr/lib/jvm/java-8-oracle/jre/"
export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/usr/local/hbase/bin
export HADOOP_HOME="/usr/local/hadoop"
export HADOOP_CONF_DIR="/usr/local/hadoop/etc/hadoop"
export HBASE_HOME="/usr/local/hbase"
# 说明:
# 第一行为 JAVA_HOME 环境变量,本教程采用 oracle-java8,如果你安装的版本不是 oracle-java,请输入自己的 Jre 安装位置(不知道请上网搜索)
# 第二行代表将 Hadoop,Hbase 的脚本放入 Path 变量,这样可以不用先 cd 到 Hadoop 安装目录,即可运行启动/关闭脚本
# 其他几行代表配置两个软件的安装位置,这里先设置好,以防装好后因为环境变量问题导致软件启动失败。
# 之后保存,并执行
source ~/.bashrc

4. 配置节点之间免密码登录

打开终端

# 依次执行
ssh-keygen -t rsa
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
# 中途遇到问题全部按回车

# 所有节点依次执行:
ssh-copy-id hadoop@对应名字
# @后面是Hosts中写好的主机名,Master、Slave1、Slave2...(小组成员 Hosts 务必保持一致(云服务器除外))

在这里插入图片描述
其他节点有几个就输入几次,比如一共有三台电脑,一台是主节点,两台从节点
那么 主节点 需要输入两次(另外两台从节点)
每个 从节点 需要输入两次(主节点和另一个从节点)

到此,从节点的组员可以休息了(但必须开机并保持联网),接下来交给主节点操作

5. 核心配置

环境准备好了,该进主题了
开始操作

5.1 配置 Hadoop

  • 编 辑 hadoop-env.sh
  • 修 改 core-site.xml
  • 修 改 hdfs-site.xml
  • 修 改 yarn-site.xml
  • 修 改 mapred-site.xml
  • 创建并修改 workers 文件
# 进入目录
cd /usr/local/hadoop/etc/hadoop/

# 编 辑 env
gedit hadoop-env.sh
# 在除了第一行的任意行添加
export JAVA_HOME="/usr/lib/jvm/java-8-oracle/jre"
# 如果不是按照该教程的方式配置的 Java 环境,请在此处填写自己的 JAVA_HOME 环境变量内容
# 备注:查看自己 JAVA_HOME 环境变量内容的语句:
echo $JAVA_HOME # 保存退出

# 修 改 core-site.xml gedit core-site.xml # 内容修改如下:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master:9000</value>
<description>指定默认文件系统(从主节点访问)</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>指定 Hadoop 临时文件夹</description>
</property>
</configuration> # 保存退出

# 修 改 hdfs-site.xml
gedit hdfs-site.xml
# 内容如下:
<configuration>
	<property>
		<name>dfs.replication</name>
		<value>3</value>
		<description>设置一个文件默认备份几次(一般为3,可根据需要调整)</description>
	</property>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:/usr/local/hadoop/tmp/dfs/name/</value>
		<description>设置 NameNode 节点文件存放位置</description>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>file:/usr/local/hadoop/tmp/dfs/data/</value>
		<description>设置 DataNode 节点文件存放位置</description>
	</property>
</configuration>
# 保存退出

# 修 改 yarn-site.xml
gedit yarn-site.xml
# 内容如下:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>Master</value>
<description>指定 yarn 管理系统主机</description>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description>设置要管理的辅助服务内容,此处会帮忙管理 MapReduce</description>
</property>
</configuration>
# 保存退出

# 修 改 mapred-site.xml
gedit mapred-site.xml
# 内容如下:
<configuration>
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
		<description>设置 MapReduce 操作基于的管理框架</description>
	</property>
	<property>
		<name>mapreduce.jobhistory.address</name>
		<value>Master:10020</value>
		<description>设置 MapReduce 操作历史的存放位置</description>
	</property>
	<property>
		<name>mapreduce.jobhistory.webapp.address</name>
		<value>Master:19888</value>
		<description>设置 MapReduce 操作历史的网页管理器地址</description>
	</property>
</configuration> 
# 保存退出

# 创建并修改 workers 文件(2.x版本叫做 slaves 文件,内容相同,请作注意)
gedit workers
# 这个文件比较特殊,它里面记录的主机名将成为 DataNode # 比如:
Master Slave1 Slave2
# 根据你的节点数和名称修改,一定要把组员都放进去,这里的这些名字同样是之前在 hosts 里面写好的
# 主节点可根据情况不写进去(如果担心主节点电脑性能太低影响实验)
# 保存退出

5.2 配置Hbase

# 进入配置目录
cd /usr/local/hbase/conf

# 修 改 hbase-env.sh
gedit hbase-env.sh
# 在除了第一行的任意位置添加
export JAVA_HOME="/usr/lib/jvm/java-8-oracle/jre" export HBASE_MANAGES_ZK=true
# 如果不是按照该教程的方式配置的 Java 环境,请在此处填写自己的 JAVA_HOME 环境变量内容
# 备注:查看自己 JAVA_HOME 环境变量内容的语句:
echo $JAVA_HOME # 保存退出

# 修 改 hbase-site.xml gedit hbase-site.xml # 内容如下:
<configuration>
	<property>
		<name>hbase.rootdir</name>
		<value>hdfs://Master:9000/hbase</value>
		<description>设置 Hbase 文件的存放位置,此处设置在 HDFS 上</description>
	</property>
	<property>
		<name>hbase.cluster.distributed</name>
		<value>true</value>
		<description>设置为分布式状态</description>
	</property>
	<property>
		<name>hbase.zookeeper.quorum</name>
		<value>此处把全部主机都写进去,比如:Master,Slave1,Slave2</value>
		<description>设置 Hbase Zookeeper 集群</description>
	</property>
</configuration> # 保存退出

# 修改 regionservers (如果没有会自动创建)
gedit regionservers
# 内容与 workers 一致即可,比如:
Master Slave1 Slave2
# 保存退出

传递配置

# 主节点分别对着各个从节点执行如下两条语句:
sudo scp /usr/local/hadoop/etc/hadoop/* hadoop@Slave1:/usr/local/hadoop/etc/hadoop/ sudo scp /usr/local/hbase/conf/* hadoop@Slave1:/usr/local/hbase/conf/
# 此处替换成不同从节点的主机名(之前hosts里写的)↑↑
# 比如一共有两台从节点,此处就用 Slave1 执行这两条,之后再改成 Slave2 执行
# 如果中途询问 yes/no ,请输入 yes 并回车
# 需要输入对应从节点密码
# 这一步会将主节点配置文件复制到每个从节点,这样一来小组全部成员的 Hadoop + Hbase 就自动配置好了

# 如果不是严格按照教程,从头一行一行来的,请务必看下面的内容

# 以下内容,如果是从头跟着教程做的就不用看:
# 如果小组有人的 Java 版本与其他人不一致,请在他的主机上依次执行下面两行代码:
# 请在他的主机上执行
gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh gedit /usr/local/hbase/conf/hbase-env.sh
# 修改这两个文件中的:
exprot JAVA_HOME="为他系统的JAVA_HOME环境变量内容"

# 查看 Java 版本(用来查看小组成员的Java版本是否一致)
java -version
# 显示当前系统 JAVA_HOME 环境变量内容(输出的内容替换到他的两个 env.sh 文件中)
echo $JAVA_HOME

做完这一步后,小组全部成员的 Hadoop + Hbase 就自动配置好了

6. 见证奇迹

# 主节点
start-dfs.sh start-yarn.sh
start-hbase.sh

# 如果没把 Hadoop,Hbase 配置到环境变量 Path 中(提示:未找到指令),尝试用如下语句启动
/usr/local/hadoop/sbin/start-dfs.sh
/usr/local/hadoop/sbin/start-yarn.sh
/usr/local/hbase/bin/start-hbase.sh

浏览器访问
Master:9870
Master:8088
Master:16010
查看情况,如果无法访问,请参考前提要求中的第三小节内容

  1. 以后如果出现失败情况,多半是Hosts问题,IP地址可能会随时间变化,所有节点用 ifconfig 指令获取 IP,然后只需要修改每个主机的 Hosts 即可
    Hosts 文件可能会因为机器(或虚拟机)重启而失效,如有类似操作,请确认 Hosts 内容
  2. 如果只是用本教程安装某一组件,比如只是用本教程安装 Hbase,那么你要确保之前的配置没有问题, 比如你的 Hadoop 确实支持你的 Hbase,你的 Java 环境变量配置没有任何问题

至此,配置工作结束,
祝,配置顺利。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章