手把手教你安装Hadoop集群
一、虚拟机安装与配置
注意,本文不适合小白操作,查看至少需要一点儿linux操作基础,因为其中有很多命令并没有写出来。比如使用vi修改文件后,需要使用:wq来保存并退出。
安装Hadoop集群时需要多个服务器,所以需要安装多个虚拟机,请自行安装。
配置服务器的hosts文件,就是将多个服务器之间建立域名配置(这样就可以使用域名来代替ip使用)。
vi /etc/hosts
最后添加如下内容(左边为每个服务器的ip,右边为主机名)
192.168.83.3 hadoop01
192.168.83.4 hadoop02
192.168.83.5 hadoop03
服务器ssh免密登录功能配置
服务器要开启ssh服务,一般的虚拟机都会自带的,如果没有,请自行安装
ssh-keygen -t rsa
输入上述命令后,不用输入任何东西,边按4次Enter键确认,会在root目录下生成一个包含有密钥文件的.ssh隐藏文件夹,进入目录可以看到有两个文件id_rsa.pub(公钥)和id_rsa。
cd /root/.ssh
ll -a
使用命令直接复制到其他服务器上
ssh-copy-id hadoop02
ssh-copy-id hadoop03
此时,在hadoop01机器上,输入ssh hadoop02或者ssh hadoop03时就可以免密登录服务器了
上述步骤需要重复,直到3个服务器之前都实现免密登录
二、Hadoop集群搭建
2.1 安装JDK,建议使用jdk1.8及以上(自行解决)
2.2 Hadoop安装
以2.10.1为例,进行安装
- 下载
- 可以到网页上下载 https://archive.apache.org/dist/hadoop/common
- 也可以直接使用wget命令下载
wget https://mirrors.aliyun.com/apache/hadoop/common/hadoop-2.10.1/hadoop-2.10.1.tar.gz
- 解压,我是直接解压到home里的
tar -zxvf hadoop-2.10.1.tar.gz /home
- 配置hadoop环境变量
vi /etc/profile
写入以下内容
# 配置Hadoop系统环境变量
export HADOOP_HOME=/home/hadoop-2.10.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
然后执行以下命令使环境变量生效(centos下修改环境变量就是这3步,记住就好了)
source /etc/profile
- 使用如下命令可以查看是否hadoop安装成功
hadoop version
三、Hadoop集群配置
3.1 配置Hadoop集群主节点
在hadoop安装目录下的etc/hadoop目录下
- 修改hadoop-env.sh文件(如果配置了JAVA_HOME环境变量,这步可跳过)
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_341
-
修改core-site.xml文件
主要设置主进程NameNode运行主机和Hadoop运行时生成的临时目录
<configuration>
<!--用于设置Hadoop的文件系统,由URI指定-->
<property>
<name>fs.defaultFS</name>
<!--用于指定namenode地址,在hadoop01机器上,是可以使用80端口的-->
<value>hdfs://hadoop01:9000</value>
</property>
<!--用于设置Hadoop临时目录,可以不设置,默认在/tmp/hadoop-${user.name}-->
<property>
<name>hadoop.tmp.dir</name>
<!--用于指定namenode地址,在hadoop01机器上-->
<value>/home/hadoop-2.10.1/tmp-${user.name}</value>
</property>
</configuration>
-
修改hdfs-site.xml文件
用来设置NameNode和DateNode两大进程,主要设置了Secondary NameNode 所在的服务的HTTP协议地址
<configuration>
<!--用于设置HDFS副本的数量,默认为3-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--secondary namenode所在主机的ip和端口-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop02:50090</value>
</property>
</configuration>
-
修改mapred-site.xml文件
这个文件不是直接存在的需要从mapred-site.xml (1).template重命名过来。
cp mapred-site.xml .template mapred-site.xml
<configuration>
<!--指定MapReduce运行时的框架,这里指定在YARN上,默认是local-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
-
修改yarn.site.xml
配置让YARN用来做资源管理框架
<configuration>
<!--指定YARN集群管理者(ResourceManager,RM)的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
-
修改slaves文件
用来配置hadoop中的集群,删除其中的localhost
hadoop01
hadoop02
hadoop03
3.2 将集群主节点的配置方伯分发到其他子节点
3.1中完成的Hadoop集群主节点hadoop01的配置,还压根把系统配置文件、JDK安装目录和Hadoop安装目录分发到其他子节点hadoop02和hadoop03上,使用的scp命名,具体使用方法,可以自己了解下,不要直接复制下边的指令哈(如果不会用scp,自己手动把上边的步骤在每个服务器上做一遍)。
scp /etc/profile hadoop02:/etc/profile
scp /etc/profile hadoop03:/etc/profile
scp -r /usr/local/jdk/jdk1.8.0_341/ hadoop02:/usr/local/jdk/
scp -r /usr/local/jdk/jdk1.8.0_341/ hadoop03:/usr/local/jdk/
scp -r /home/hadoop-2.10.1 hadoop02:/home
scp -r /home/hadoop-2.10.1 hadoop03:/home
四、Hadoop集群测试
4.1 格式化文件系统
hdfs namenode -format
或者
hadoop namenode -format
4.2 启动或者关闭Hadoop集群
可以单节点逐个启动和关闭,也可以用脚本一键启动或关闭
-
单节点逐个启动
- 在主节点上启动HDFS NameNode
hadoop-daemon.sh start namenode
- 在每个节点上使用以下指定启动HDFS DataNode 进程
hadoop-daemon.sh start datanode
- 在主节点上使用以下指令启动YARN ResourceManager进程:
yarn-daemon.sh start nodemanager
- 在每个从节点上使用以下指令启动YARN nodemanger进程:
yarn-daemon.sh start nodemanager
- 在hadoop02上使用以下指令启动SecondaryNameNode进程:
hadoop-daemon.sh start secondarynamenode
-
脚本一键启动
要求每个节点之前开启ssh免密登录,上文中有写
- 在主节点上使用以下命令启动HDFS进程
start-dfs.sh
- 在主节点上启动所有的YARN进程
start-yarn.sh
4.3 关闭Hadoop集群
不论是单个节点启动还是一键启动,只需要把上边的start换成stop就可以停止了
4.4 通过UI 查看Hadoop运行状态
注意在windows中的hosts中配置域名映射(内容和上边在虚拟机中配置的一样)。还有虚拟机上记得关闭防火墙放行50070和8088端口
然后在浏览器输入hadoop01:50070 和hadoop01:8088
更多学习内容请关注我的博客 jhacker.cn