大数据 Hadoop 集群安装
一、集群配置信息
二、克隆相关主机,以及初始化主机名及IP
链接:https://www.cnblogs.com/mangoubiubiu/p/17364337.html
配置Hosts
vi /etc/hosts 192.168.117.120 hadoop120 192.168.117.121 hadoop121 192.168.117.122 hadoop122
三、JDK安装
此处略过
四、Hadoop安装
1、下载Hadoop安装包
链接:https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz
2、上传至Linux对应目录并解压缩(192.168.117.120)
vim /etc/profile
export HADOOP_HOME=/usr/hadoop/hadoop-3.1.3 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin
source /etc/profile
192.168.117.120 机已安装完毕
3、编写集群分发脚本xsync
一、scp(secure copy) 安全拷贝
(1) scp定义
scp可以实现服务器与服务器之间的数据拷贝。(from server1 to server2 )
(2) 基本语法
scp -r $pdir/$fname $user@$host:$pdir/$fname
命令 递归 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称
(3) 实例操作
a. 将本机120的hadoop安装包拷贝到 122机
scp -r hadoop-3.1.3/ root@hadoop122:/usr/hadoop/
b. 将远程机120的hadoop安装包拉取到本机 121机
scp -r root@hadoop120:/usr/hadoop/hadoop-3.1.3 ./
c. 本机是121机,将远程机120的hadoop安装包拷贝到远程机122
scp -r root@hadoop120:/usr/hadoop/* root@hadoop122:/usr/hadoop/
二、rsync远程同步工具
rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。
(1)基本语法
rsync -av $pdir/$fname $user@$host:$pdir/$fname
命令 选项参数 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称
选项参数说明
选项 | 功能 |
-a | 归档拷贝 |
-v | 显示复制过程 |
(2)案例实操
a. 删除hadoop121中/usr/hadoop/hadoop-3.1.3/bin
[root@hadoop121 hadoop-3.1.3]# rm -rf bin/
b. 同步hadoop120中的/usr/hadoop/hadoop-3.1.3 到 hadoop121
[root@hadoop120 hadoop]# rsync -av hadoop-3.1.3/ root@hadoop121:/usr/hadoop/hadoop-3.1.3/
三、xsync集群分发脚本
(1)需求:循环复制文件到所有节点的相同目录下
(2)需求分析:
(a)rsync命令原始拷贝:
rsync -av /usr/hadoop root@hadoop122:/usr/hadoop/
(b)期望脚本:
xsync要同步的文件名称
(c)期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)
[root@hadoop121 hadoop-3.1.3]# echo $PATH :/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.8.0_181/bin:/root/bin
(3)脚本实现:
#!/bin/bash #1.判断参数个数 if [ $# -lt 1 ] then echo Not Enough Arguement! exit; fi #2.遍历集群所有机器 for host in hadoop120 hadoop121 hadoop122 do echo ========================== $host ============================= #3. 遍历所有目录,挨个发送 for file in $@ do #4. 判断文件是否存在 if [ -e $file ] then #5. 获取父目录 pdir=$(cd -P $(dirname $file); pwd) #6. 获取当前文件名称 fname=$(basename $file) ssh $host "mkdir -p $pdir" rsync -av $pdir/$fname $host:$pdir else echo $file doest not exists! fi done done
四、ssh免密登录
a.hadoop120免密登录 hadoop121 hadoop122
ssh-keygen -t rsa
ssh-copy-id hadoop121
ssh-copy-id hadoop122
以此类推 三台设置免密登录
4、集群配置
(1)集群部署规划
注意:
- NameNode和SecondaryNameNode不要安装在同一台服务器。
- ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。
hadoop120 | hadoop121 | hadoop122 | |
HDFS |
NameNode DataNode |
DataNode |
SecondaryNameNode DataNode |
YARN | NodeManager |
ResourceManager NodeManager |
NodeManager |
(2)配置文件说明
Hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值是,才需要修改自定义配置文件,更改相应属性到的值。
a. 默认配置文件:
要获取的默认文件 | 文件存放在Hadoop的jar包中的位置 |
[core-default.xml] | hadoop-common-3.1.3.jar/core-default.xml |
[hdfs-default.xml] | hadoop-hdfs-3.1.3.jar/hdfs-default.xml |
[yarn-default.xml] | hadoop-yarn-common-3.1.3.jar/yarn-default.xml |
[mapred-default.xml] | hadoop-mapreduce-client.core-3.1.3.jar/mapred-default.xml |
b. 自定义配置文件:
core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml 四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径,用户可以根据项目需求重新进行修改配置。
(3)配置集群
1 核心配置文件
配置core-site.xml
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <!-- 指定 NameNode 的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop120:8020</value> </property> <!-- 指定 hadoop 数据的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/usr/hadoop/hadoop-3.1.3/data</value> </property> <!-- 配置 HDFS 网页登录默认使用的静态用户为 --> <property> <name>hadoop.http.staticuser.user</name> <value>kw</value> </property> </configuration>
2 HDFS配置文件
配置hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop160:9870</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop162:9868</value>
</property>
</configuration>
3 yarn-site.xml配置
文件内容如下
<!-- 指定MR走shuffle --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定ResourceManager的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop121</value> </property> <!-- 环境变量的继承 --> <property> <name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value> </property>
4 MapReduce配置文件—mapred-site.xml
<!-- 指定MapReduce程序运行在Yarn上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
在120 配好配置文件后,将文件分发到其他机器
5、群起集群
1) 配置workers
[root@hadoop120 hadoop]# vim /usr/hadoop/hadoop-3.1.3/etc/hadoop/workers
hadoop120
hadoop121
hadoop122
注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。
2) 启动集群
1.如果集群是第一次启动,需要在 hadoop120 节点格式化 NameNode 注意:格式化NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停止namenode 和 datanode 进程,并且要删除所有机器的data 和 logs 目录,然后再进行格式化。
hdfs namenode -format
3) 启动HDFS
sbin/start-dfs.sh
启动报错一:hadoop120: ERROR: JAVA_HOME is not set and could not be found.
这里我们三台机JAVA环境变量都配好了 javac 也确实没有问题,找到/etc/hadoop/hadoop-env.sh文件 找到JAVA_HOME配置 配上你的路径
启动报错二:ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
增加如下配置,注意是在文件开始空白处
在start-dfs.sh中:
HDFS_DATANODE_USER=root HADOOP_SECURE_DN_USER=hdfs HDFS_NAMENODE_USER=root HDFS_SECONDARYNAMENODE_USER=root
在start-yarn.sh中
YARN_RESOURCEMANAGER_USER=root HADOOP_SECURE_DN_USER=yarn YARN_NODEMANAGER_USER=root
4) 在配置了ResourceManager的节点(hadoop121)启动YARN
[root@hadoop121 hadoop-3.1.3]# sbin/start-yarn.sh
SUCCESS!!!!!
5) Web端查看HDFS的NameNode
(a)浏览器输入:http://hadoop120:9870
(b) 查看HDFS上存储的数据信息
6) Web端查看YARN的ResourceManager
(a) 浏览器输入:http://hadoop121:8088
(b) 查看YARN上运行的JOB信息
PS 注意配置你本机的hosts地址