hadoop3 完全分布式集群搭建(一)
基础概念1. NameNode存储文件的元数据。如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表和所在的DataNode等。2. DataNode具体存储文件块数据,以及数据块校验和。3. Secondary NameNode(2nn)每隔一段时间对NameNode元数据备份。4. ResourceManager管理整个集群的资源(内存,cpu等)。5. Nod
基础概念
1. NameNode
存储文件的元数据。如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表和所在的DataNode等。
2. DataNode
具体存储文件块数据,以及数据块校验和。
3. Secondary NameNode(2nn)
每隔一段时间对NameNode元数据备份。
4. ResourceManager
管理整个集群的资源(内存,cpu等)。
5. NodeManager
管理单个节点的资源(内存,cpu等)。
开始搭建
机器准备
- 192.168.3.48 hadoop1 (master)
- 192.168.3.46 hadoop2 (slave)
- 192.168.3.47 hadoop3 (slave)
部署结构图
具体步骤
1.修改hostname:
# 192.168.3.48 [root@localhost hadoop]# hostnamectl set-hostname hadoop1 # 192.168.3.46 [root@localhost hadoop]# hostnamectl set-hostname hadoop2 # 192.168.3.47 [root@localhost hadoop]# hostnamectl set-hostname hadoop3
2.三台机器修改hosts:
[root@localhost hadoop]# vim /etc/hosts 192.168.3.48 hadoop1 192.168.3.46 hadoop2 192.168.3.47 hadoop3
3.关闭防火墙 要保证任何一台机器能ping hostname
# 关闭防火墙 [root@hadoop1 hadoop]# systemctl stop firewalld.service # 禁止开机启动 [root@hadoop1 hadoop]# systemctl disable firewalld.service
4. 配置ssh免密登录
分别在三台机器上生成 ssh 链接的私钥和公钥(一直回车,直到结束),在用户的家目录下生成一个隐藏文件 .ssh
# 后面一路回车 [root@localhost ~]# ssh-keygen -t rsa #查看生成文件 [root@localhost ~]# ls .ssh/ id_rsa id_rsa.pub known_hosts
三台机器 拷贝公钥
[root@localhost ~]# cd /root/ [root@localhost ~]# ssh-copy-id -i .ssh/id_rsa.pub hadoop1 [root@localhost ~]# ssh-copy-id -i .ssh/id_rsa.pub hadoop2 [root@localhost ~]# ssh-copy-id -i .ssh/id_rsa.pub hadoop3
拷贝完成会生成下面文件
[root@localhost ~]# cd /root/.ssh/ [root@localhost .ssh]# ll 总用量 16 -rw-------. 1 root root 1182 10月 14 17:41 authorized_keys -rw-------. 1 root root 1679 10月 14 17:36 id_rsa -rw-r--r--. 1 root root 394 10月 14 17:36 id_rsa.pub -rw-r--r--. 1 root root 546 10月 14 17:41 known_hosts
5. 安装jdk8 , 不讲。
6. 下载hadoop3.1.3.tar.gz , 解压 :
[root@localhost hadoop-3.1.3]# pwd /usr/local/hadoop-3.1.3
配置环境变量:
## java 环境变量 export JAVA_HOME=/usr/local/java8/ export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin # hadoop 变量 export HADOOP_HOME=/usr/local/hadoop-3.1.3 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin
7. 修改配置
配置文件在 /usr/local/hadoop-3.1.3/etc/hadoop/ 目录下
core-site.xml
<configuration> <!-- 指定NameNode地址--> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop1:8020</value> </property> <!-- 指定hadoop数据的存储目录--> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop-3.1.3/data</value> </property> </configuration>
hdfs-site.xml
<configuration> <!-- 指定NameNode web--> <property> <name>dfs.namenode.http-address</name> <value>hadoop1:9870</value> </property> <!-- second name node web --> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop3:9868</value> </property> </configuration>
mapred-site.xml
<configuration> <!-- 指定NameNode地址--> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
yarn-site.xml
<configuration> <!-- Site specific YARN configuration properties --> <!-- 指定 MR shuffle--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- ResourceManager addr--> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop2</value> </property> <property> <name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_CONNON_HONE,HADOOP_HDFS_HONE,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADO0P_MAPRED_HOME</value> </property> </configuration>
workers
hadoop1 hadoop2 hadoop3
HADOOP_SECURE_DN_USER=root HDFS_SECONDARYNAMENODE_USER=root HDFS_NAMENODE_USER=root HDFS_DATANODE_USER=root HDFS_ZKFC_USER=root HDFS_JOURNALNODE_USER=root YARN_RESOURCEMANAGER_USER=root YARN_NODEMANAGER_USER=root JAVA_HOME=/usr/local/java8/ HADOOP_SHELL_EXECNAME=root
启动
1. 启动HDFS
第一次启动时,需要格式化 , 在 hadoop1(master) 机器上:
hdfs namenode -format
执行完成后hadoop安装目录会多出:
hadoop1 (master)机器上 启动:
[root@localhost hadoop-3.1.3]# start-dfs.sh
只需要启动master的就可以了,其它机器的会自己启动。
hadoop1
hadoop2
hadoop3
浏览器访问
启动成功!!!!
2. 启动yarn
在hadoop2机器上启动:
[root@hadoop2 ~]# start-yarn.sh
到此集群搭建完毕!!!!
推荐一个Java架构师博客,带你一起写架构:
总结
今天相当于讲得是运维方面的环境搭建,按照操作步骤来就可以搭建成功,后面会有实际案例要运行在hadoop集群上,所以这是迈开的第一步。
更多推荐
所有评论(0)