基本工具安装
ansible
ansible是一个自动化管理工具,当集群规模较大时,可以很方便的与被管理服务器交互。
- 安装ansible
//在Mac环境下,可以轻松的使用brew管理工具来安装
brew reinstall ansible
- 验证安装是否成功。
执行:ansible --version,如果出现下图则说明安装成功。
ansible 2.7.6
config file = None
configured module search path = ['/Users/hadoop/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/local/Cellar/ansible/2.7.6/libexec/lib/python3.7/site-packages/ansible
executable location = /usr/local/bin/ansible
python version = 3.7.2 (default, Jan 27 2019, 12:50:35) [Clang 10.0.0 (clang-1000.10.44.2)]
- 添加group开始使用
mkdir /etc/ansible
//在/etc/ansible目录下新建hosts文件,创建名称为hadoop的group,并在该group中加入统一管理的服务器。
//vim /etc/ansible/hosts
[hadoop]
s0
s1
s2
s3
s4
上述中hadoop是group名,s0-s5是该组中的主机。
备注:在同一组下面如果想统一管理,需要配置每台服务器的ansible连接用户的密码是一致的,如果使用到root用户操作,还要保证root密码是一致的。
有关ansible的具体知识可以参看如下链接:
http://www.ansible.com.cn/index.html
安装jdk
- 下载jdk安装包
从oracle官网下载jdk1.8:
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
我们操作系统是64位centos,下载jdk-8u201-linux-x64.tar.gz。
- 使用ansible将jdk安装包分发到集群各节点。
//假设我们安装包在/tmp目录,使用如下命令分发(由于最后我们会采用hadoop用户安装集群,因此我们先在各个子节点创建所有用户都可以访问的路径)
ansible hadoop -m copy -a "src=/tmp/jdk-8u201-linux-x64.tar.gz dest=/tmp/" -k (根据提示输入hadoop密码)
ansible hadoop -S -R root --ask-su-pass -m shell -a "tar -zxvf /tmp/jdk-8u201-linux-x64.tar.gz -C /usr/lib" -k (根据提示输入hadoop密码,root密码)
ansible hadoop -S -R root --ask-su-pass -m shell -a "ln -s /usr/lib/jdk1.8.0_201 /usr/lib/jdk "
ansible hadoop -S -R root --ask-su-pass -m shell -a "ln -s /usr/lib/jdk1.8.0_201 /usr/lib/jdk "
ansible hadoop -S -R root --ask-su-pass -m shell -a "chown -R hadoop:hadoop /usr/lib/jdk "
ansible hadoop -S -R root --ask-su-pass -m shell -a "chmod 755 /usr/lib/jdk "
- 配置Java环境变量
ssh s0,修改hadoop用户的~/.bash_profile,添加JAVA_HOME,PATH。具体为在文件中加入如下两行:
//vim ~/.bash_profile
export PATH
export JAVA_HOME=/usr/lib/jdk
export PATH=$JAVA_HOME/bin:$PATH
编辑保存后将该文件分发到s1–s4.
备注:为了使用方便,也可以在主节点s0上安装ansible。方法有离线安装和yum安装,网上方法有很多,不赘述。
- 验证是否成功
在s0-s4服务器上,执行java -version,出现如下说明安装成功。
[hadoop@s0 ~]$ java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
hadoop安装
hadoop当前基本是所有大数据服务组件的底层组件,大部分的社区大数据组件均依赖于hadoop。hadoop分为两个模块:HDFS,YARN。HDFS是数据存储模块,YARN是资源分配与调度模块。后面将先从整体架构上了解这两个模块,然后从源码层面展开一一学习。
服务器名称 | 安装服务 | 备注 |
---|---|---|
s0 | NameNode,ResourceManager,Zookeeper,ZKFC,JournalNode,WebProxy | Master节点 |
s1 | NameNode,ResourceManager,Zookeeper,ZKFC,JournalNode,JobHistory | Master节点 |
s2 | JournalNode,Zookeeper,DataNode,NodeManager | Slave节点 |
s3 | DataNode,NodeManager | Slave节点 |
s4 | DataNode,NodeManager | Slave节点 |
- 创建hadoop安装目录
//在本地通过ansible在hadoop组服务器上创建名称为/app的目录,我们统一将hadoop安装在该目录下。
命令如下
ansible hadoop -S -R root --ask-su-pass -m shell -a "mkdir /app" -k (根据提示输入hadoop及root密码)
ansible hadoop -S -R root --ask-su-pass -m shell -a "chown -R hadoop:hadoop /app; chmod -R 755 /app" (根据提示输入hadoop及root密码)
- 解压安装
将安装包分发至s0-s4,解压进行安装。
安装包目录根据实际修改(我的hadoop安装包是自己编译,放在~/app/hadoop-3.1.0-src/hadoop-dist/target/ 目录)
//1. ansible 中-k表示输入执行用户密码,-S -R root --ask-su-pass 表示输入root密码,根据提示输入即可后续不再赘述。如果觉得输入密码麻烦,可以配置执行用户到目标服务器的免密码,配置成功后命令中去掉-k即可。
//2.hadoop安装成功后为了方便,创建了软连接。
ansible hadoop -m copy -a "src=~/app/hadoop-3.1.0-src/hadoop-dist/target/hadoop-3.1.0.tar.gz dest=/app/" -k
ansible hadoop -m shell -a "tar -zxvf /app/hadoop-3.1.0.tar.gz -C /app" -k
ansible hadoop -m shell -a "chmod 755 /app/hadoop-3.1.0" -k
ansible hadoop -m shell -a "ln -s /app/hadoop-3.1.0 /app/hadoop;ln -s /app/hadoop-3.1.0/etc/hadoop /app/hadoop-config" -k
- 配置hadoop用户环境变量
编辑用户环境变量配置文件,vim ~/.bash_profile,添加如下:
HADOOP_HOME=/app/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- 在s0管理节点安装ansible
Linux下安装ansible非常方便,在root用户下使用yum安装即可。
yum -y install ansible
chown -R hadoop:hadoop /etc/ansible
安装完成后,Linux下会自动创建/etc/ansible/hosts文件,vim 编辑添加hadoop组。
vim /etc/ansible/hosts //添加如下内容
[hadoop]
s0
s1
s2
s3
s4
至此hadoop安装完毕,下节介绍HA配置及启动。