服务器
192.168.120.129 hadoop-node1
192.168.120.130 hadoop-node2
192.168.120.131 hadoop-node3
一.下载Hadoop
hadoop下载
我在
这里选的是编译好的最新版本hadoop-3.3.2
?
上传到192.168.120.129服务器/opt目录下解压
tar -zxvf hadoop-3.3.2.tar.gz
二.配置服务器
1.配置hosts,添加以下内容(每台节点都执行)
vim /etc/hosts
192.168.120.129 hadoop-node1
192.168.120.130 hadoop-node2
192.168.120.131 hadoop-node3
2.关闭防火墙和selinux(所有节点都执行)
$ systemctl stop firewalld $ systemctl disable firewalld
# 临时关闭(不用重启机器): $ setenforce 0 ? ? ? ? ? ? ? ? ?##设置SELinux 成为permissive模式
# 永久关闭修改/etc/selinux/config 文件 将SELINUX=enforcing改为SELINUX=disabled
3.时间同步,安装 chrony(所有节点都执行)
?yum -y install chrony
配置文件内容
vim?/etc/chrony.conf
# Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). #pool 2.centos.pool.ntp.org iburst (这一行注释掉,增加以下两行) server ntp.aliyun.com iburst server cn.ntp.org.cn iburst
重新加载配置并测试?
$ systemctl restart chronyd.service $ chronyc sources -v
4.配置ssh免密,生成秘钥,出现任何东西全部回车不需要你输入任何东西,都是默认。(在hadoop-node1上执行)
ssh-keygen -t rsa
将公钥信息保存在授权认证的文件中:
cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
二.多主机配置,使用同一份rsa 公私钥,拷贝整个.ssh文件夹到其它服务器
scp -r ?~/.ssh root@192.168.120.130:~/
scp -r ?~/.ssh root@192.168.120.131:~/
安装统一工作目录(所有节点都执行)
# 软件安装路径 $ mkdir -p /opt/bigdata/hadoop/server # 数据存储路径 $ mkdir -p /opt/bigdata/hadoop/data
6.安装JDK,配置环境变量
# 在文件加入环境变量/etc/profile export JAVA_HOME=/usr/local/jdk1.8 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# source加载 $ source /etc/profile # 查看jdk版本 $ java -version
三.开始安装Hadoop
进入/opt/hadoop-3.3.2/etc/hadoop目录
修改hadoop-env.sh
# 在hadoop-env.sh文件末尾追加 export JAVA_HOME=/usr/local/jdk1.8 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
修改core-site.xml?#核心模块配置,在<configuration></configuration>中间添加以下内容
<!-- 设置默认使用的文件系统 Hadoop支持file、HDFS、GFS、ali|Amazon云等文件系统 --> <property> ? <name>fs.defaultFS</name> ? <value>hdfs://hadoop-node1:8082</value> </property>
<!-- 设置Hadoop本地保存数据路径 --> <property> ? <name>hadoop.tmp.dir</name> ? <value>/opt/bigdata/hadoop/data/hadoop</value> </property>
<!-- 设置HDFS web UI用户身份 --> <property> ? <name>hadoop.http.staticuser.user</name> ? <value>root</value> </property>
<!-- 聚合hive 用户代理设置 --> <property> ? <name>hadoop.proxyuser.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?#hdfs文件系统模块配置,在<configuration></configuration>中间添加以下内容
<!-- 设置SNN进程运行机器位置信息 --> <property> ? <name>dfs.namenode.secondary.http-address</name> ? <value>hadoop-node2:9868</value> </property>
<!-- 必须将dfs.webhdfs.enabled属性设置为true,否则就不能使用webhdfs的LISTSTATUS、LISTFILESTATUS等需要列出文件、文件夹状态的命令,因为这些信息都是由namenode来保存的。 --> <property> ? <name>dfs.webhdfs.enabled</name> ? <value>true</value> </property>
修改mapred.xml?#MapReduce模块配置
<!-- 设置MR程序默认运行模式,yarn集群模式,local本地模式 --> <property> ? <name>mapreduce.framework.name</name> ? <value>yarn</value> </property>
<!-- MR程序历史服务地址 --> <property> ? <name>mapreduce.jobhistory.address</name> ? <value>hadoop-node1:10020</value> </property>
<!-- MR程序历史服务web端地址 --> <property> ? <name>mapreduce.jobhistory.webapp.address</name> ? <value>hadoop-node1:19888</value> </property>
<!-- yarn环境变量 --> <property> ? <name>yarn.app.mapreduce.am.env</name> ? <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> </property>
<!-- map环境变量 --> <property> ? <name>mapreduce.map.env</name> ? <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> </property>
<!-- reduce环境变量 --> <property> ? <name>mapreduce.reduce.env</name> ? <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> </property>
修改yarn-site.xml?#yarn模块配置
<!-- 设置YARN集群主角色运行集群位置 --> <property> ? <name>yarn.resourcemanager.hostname</name> ? <value>hadoop-node1</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://hadoop-node1:19888/jobhistory/logs</value> </property>
<!-- 设置yarn历史日志保存时间 7天 --> <property> ? <name>yarn.log-aggregation.retain-seconds</name> ? <value>604880</value> </property>
修改workers?将下面内容覆盖文件,默认只有localhost
hadoop-node1 hadoop-node2 hadoop-node3
分发同步hadoop安装包到另外几台机器
scp -r ?/opt/hadoop-3.3.2 hadoop-node2:/opt/ scp -r ?/opt/hadoop-3.3.2 hadoop-node3:/opt/
将hadoop添加到环境变量(所有节点)
$ vi /etc/profile
export HADOOP_HOME=/opt/hadoop-3.3.2/ export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
# 加载 $ source /etc/profile
Hadoop集群启动(hadoop-node1上执行)
1)(首次启动)格式化namenode(只能执行一次)
- 首次启动HDFS时,必须对其进行格式化操作
- format本质上初始化工作,进行HDFS清理和准备工作
$ hdfs namenode -format
在hadoop-node1上,使用软件自带的shell脚本一键启动。前提:配置好机器之间的SSH免密登录和works文件
Hadoop集群启停(HDFS+YARN)
$ start-all.sh $ stop-all.sh
HDFS集群启停
$ start-dfs.sh $ stop-dfs.sh?
# 查看java进程 $ jps
YARN集群启停
$ start-yarn.sh $ stop-yarn.sh # 查看java进程 $ jps
通过日志检查,日志路径:/opt/hadoop-3.3.2/logs?
通过web页面访问, C:\Windows\System32\drivers\etc\hosts文件配置域名映射,hosts文件中增加如下内容:
192.168.120.129 hadoop-node1 192.168.120.130 hadoop-node2 192.168.120.131 hadoop-node3
HDFS集群
这里地址为:http://hadoop-node1:9870
YARN集群
这里地址为:http://hadoop-node1:8088?
?到此为止,hadoop和yarn集群就已经部署完了~
|