hadoop的安装
虚拟机镜像:centos-7
虚拟机三台:
hadoop1:主节点
hadoop2:从节点
hadoop3:从节点
本博客相关资源文件连接:
编译所需安装包
编译后的hadoop3.3.1
1.服务器ip以及名称的配置
- 修改服务器ip为静态ip
1. 查看本机ip
ip addr (idconfig)
2. 进入网卡配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
3. 修改ip为静态并配置IP地址
BOOTPROTO="static"
IPADDR="192.168.253.137"
NETMASK="255.255.255.0"
GATEWAY="192.168.253.2"
DNS1="192.168.253.2"
- 修改服务器名称
1.配置host
vim /etc/hosts
例如(我的三台机器的配置信息):
192.168.253.138 hadoop1 hadoop1.study.cn
192.168.253.139 hadoop2 hadoop2.study.cn
192.168.253.140 hadoop3 hadoop3.study.cn
2.修改服务器名称
vim /etc/hostname
将服务器名字修改成hadoop1,hadoop2,hadoop3
- 验证修改
直接ping hadoop1,hadoop2,hadoop3
或者ping hadoop1.study.cn,hadoop2.study.cn,hadoop3.study.cn
2.配置搭建的服务器之间免密登录
- 在两台从服务器上输入命令
mkdir /root/.ssh
- 采用dsa加密生成密钥,也可以采用rsa加密
ssh-keygen -t dsa
然后一直回车
- 上面将密钥生成在默认路径/root/.ssh下,然后将其内容输出/root/.ssh/authorized_keys中
cat /root/.ssh/id_dsa.pub >> /root/.ssh/authorized_keys
- 然后将公钥复制到其他两个需要免密钥登录的slave1和slave2中
scp /root/.ssh/authorized_keys (从服务器1的ip或者配置好的服务器名称):/root/.ssh/
scp /root/.ssh/authorized_keys (从服务器2的ip或者配置好的服务器名称):/root/.ssh/
- 然后再住服务器上ssh登录两台从服务器进行测试
命令:ssh (从服务器1的ip或者配置好的服务器名称)
退出:logout(exit)
注意:免密登录之间的问题。是主服务器到从服务器免密,不是从服务器到主服务器
3.关闭所有服务器的防火墙
关闭防火墙
systemctl stop firewalld.service
禁止firewall开机启动
systemctl disable firewalld.service
4.CentOS7中多台服务器配置时钟同步:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119276930
5.Centos编译hadoop所需软件
- Hadoop3.3.1版本 https://dlcdn.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1-src.tar.gz
- Maven 3.3 or later
官网下载地址:https://maven.apache.org/download.cgi
直达下载地址:https://mirror.bit.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz - ProtocolBuffer 2.5.0 必须是这个不能高也不能低,而且需要自己安装,不是解压后就能用
下载地址:https://github.com/protocolbuffers/protobuf/releases/tag/v2.5.0
直达下载地址: https://github.com/protocolbuffers/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz - CMake 3.1 or newer (if compiling native code) 需要手动安装 因为centso7
的仍然是2.8.5 不能使用
官网下载地址:https://cmake.org/download/
我选择的是3.17.5
直达下執地址:[https://github.com/Kitware/CMake/releases/download/v3.17.5/cmake-3.17.5-Linux-x86 64.sh](https://github.com/Kitware/CMake/releases/download/v3.17.5/cmake-3.17.5-Linux-x86 64.sh)
如果上面的不能下载:点击此处下载
6.安装jdk
- 上传jdk安装包到服务器上
- 解压:
tar -zxvf jdk-8u191-linux-x64.tar.gz
- 配置环境变量:
vi /etc/profile
JAVA_HOME=/usr/jdk/jdk1.8.0_191 #jdk安装目录
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
export PATH JAVA_HOME CLASSPATH TOMCAT_HOME
7.安装maven
- 上传压缩包到指定目录
- 解压压缩包:
tar -zxvf apache-maven-3.8.4-bin.tar.gz
- 配置环境变量:
vi /etc/profile
export MAVEN_HOME=/home/bisuser/maven/apache-maven-3.8.4
export PATH=$MAVEN_HOME/bin:$PATH
- 刷新配置文件:
source /etc/profile
- 检查maven版本信息:
mvn -v
- 配置maven远程仓库地址(国外的慢!!)
切换到maven的配置文件目录:cd /home/bisuser/maven/apache-maven-3.8.4/conf
打开配置文件:vi settings.xml
- 找到配置文件中 的
mirrors
原配置文件:
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
<mirror>
<id>maven-default-http-blocker</id>
<mirrorOf>external:http:*</mirrorOf>
<name>Pseudo repository to mirror external repositories initially using HTTP.</name>
<url>http://0.0.0.0/</url>
<blocked>true</blocked>
</mirror>
</mirrors>
修改成:
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
<!-- <mirror>
<id>maven-default-http-blocker</id>
<mirrorOf>external:http:*</mirrorOf>
<name>Pseudo repository to mirror external repositories initially using HTTP.</name>
<url>http://0.0.0.0/</url>
<blocked>true</blocked>
</mirror> -->
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
</mirrors>
将国产地址配置进去
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
8.安装yum可以安装的必要软件
yum -y install gcc*
yum install autoconf automake libtool cmake
yum -y install openssl-devel
yum -y install ncurses-devel
yum install lzo-devel zlib-devel bzip2
yum -y install libs*
yum install fuse-devel
9.安装ProtocolBuffer
- 上传protobuf-2.5.0.tar.gz的安装包到服务器
- 解压:
tar -zxvf protobuf-2.5.0.tar.gz
- 进入解压后的目录:
cd protobuf-2.5.0
- 执行生成配置文件:
./autogen.sh
- 运行配置脚本,配置一些信息:
./configure
- 编译:
make
- 安装:
make install
- 验证:
protoc --version
which protoc
10.安装cmake(否则在编译的时候会报错,可以先通过11自行验证一下)
- yum删除已安装的cmake:
yum erase cmake
- 解压安装包:
tar -zxvf cmake-3.13.5.tar.gz
- 跳转至cmake目录:
cd /home/bisuser/cmake/cmake-3.17.5
- 编译:
./configure
- 安装:
make && make install
- 检验安装是否成功:
cmake -version
11.编译安装hadoop(编译hadoop后,将安装包复制到两个从服务器)
- 将hadoop压缩包上传到服务器(压缩包是源码压缩包)
- 解压:
tar -zxvf hadoop-3.3.1-src.tar.gz
- 在源码目录下:
mvn clean package -DskipTests -Pdist,native -Dtar
mvn clean package -DskipTests -Pdist,native -Dtar
参数:clean → 清理旧的jar包
package →打包,hadoop源码编译之后的安装包
-DskipTests →跳过测试
-Pdist,native →生成结果目录的后缀dist, native:本地cpu相吻合的.so动态链接库,会将其一并打包到安装包中去
-Dtar → 打包后的目标压缩包的类型,xxx.tar.gz
报错:
执行完10步骤后重新执行上面命令:
等待便已完成,
编译后的文件在:/home/bisuser/hadoop/hadoop-3.3.1/hadoop-dist/targer/
目录下。
文件名为hadoop-3.3.1.tar.gz
- 将编译好得hadoop安装包复制到相应的目录
- 解压压缩包:
tar -zxvf hadoop-3.3.1.tar.gz
- 进入到解压后的目录:cd hadoop-3.3.1
- hadoop配置文件目录:
/hadoop-3.3.1/etc/hadoop
- 修改
Hapdoop-env.sh
:vi hadoop-env.sh
#在文档最后添加
export JAVA_HOME=/usr/jdk/jdk1.8.0_191
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
- 修改
xxx-site.xml
,site标识用户定义的配置,会覆盖default中的默认配置:
包含:
core-site.xml
核心模块配置
hdfs-site.xml
hdfs文件系统,模块配置
mapred-site.xml
MapReduce模块配置
yarn-site.xml
yarn模块配置
core-site.xml
的配置:
<!-- 设置默认的文件系统Hadoop支持file、HDFS、GFS、ali|Amazon云等我恩建系统 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:8082</value>
</property>
<!-- 设置Hadoop的本地保存路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/bisuser/hadoop/data</value>
</property>
<!-- 设置HDFS web ui 的用户身份 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<!-- 整合hive用户代理设置 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<!-- 文件系统垃圾桶保存时间 -->
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
hdfs-site.xml
配置
<!-- 设置SNN进行运行机器位置信息 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop2:9868</value>
</property>
mapred-site.xml
配置
<!-- 设置MR程序默认运行模式,yarn集群模式、local本地模式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- MR程序历史服务地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop1:10020</value>
</property>
<!-- MR程序历史服务器veb端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop1:19888</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
yarn-site.xml
配置
<!-- 设胃YARN集群主角色运行机器位罝 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 是否将对容器实施物理内存限制 -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!-- 是否将对容器实施虛拟内存限制 -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<!-- 开启日志聚集 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设買yarn历史服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop1:19888/jobhistory/logs</value>
</property>
<!-- 设買历史日志保留天数15天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>1296000</value>
</property>
- 配置
workers
:vi workers
hadoop1.study.cn
hadoop2.study.cn
hadoop3.study.cn
- 配置hadoop的环境变量:
vi /etc/profile
export HADOOP_HOME=/home/bisuser/hadoop/hadoop-3.3.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- 刷新配置文件:
source /etc/profile
- 验证:
hadoop
12.启动hadoop
首次启动前需要进行初始化(且只能执行一次),初始化需要在主服务器上:
命令:hdfs namenode -format
是否成功查看是否包含:INFO common.Storage: Storage directory /home/bisuser/hadoop/data/dfs/name has been successfully formatted.
逐个启动
- HDFS启动
- hadoop2.x版本命令
hadoop-daemon.sh start|stop namenode|datanode|secondarynamenode
- hadoop3.x版本命令
hdfs -daemon start|stop namenode|datanode/secondarynamenode
- YARN启动
- hadoop2.x版本命令
yarn-daemon.sh start|stop resourcemanager|nodemanager
- hadoop3.x版本命令
yarn -daemon start|stop resourcemanager|nodemanager
一键启动(前提:配置好机器之间SSH的免密登录和worker文件)
- HDFS集群启动
start-dfs.sh
stop-dfs.sh
- YARN集群启动
start-yarn.sh
stop-yarn.sh
- HADOOP集群启动(同时启动HDFS和YARN)
start-all.sh
stop-all.sh
启动成功,安装完毕。
参考:https://blog.csdn.net/m0_52080234/article/details/120758250
和
ttps://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119335883
感谢上面两位博主