参考 | |
安装java | |
安装必要插件 | ssh |
下载 | Index of /apache/hadoop/common hadoop-3.3.2.tar.gz |
解压 | tar -zxf ./hadoop-3.3.2.tar.gz 或 tar -zxf ./hadoop-3.3.2.tar.gz 指定目录 /usr/data2/program/hadoop 我解压在这个目录 root@pc1-node1:/usr/data2/program/hadoop# ll total 623708 drwxr-xr-x 3 root root 4096 May 1 17:08 ./ drwxr-xr-x 6 root root 4096 May 1 17:02 ../ drwxr-xr-x 10 501 dialout 4096 Feb 22 04:42 hadoop-3.3.2/ -rw-r--r-- 1 root root 638660563 May 1 15:52 hadoop-3.3.2.tar.gz |
配置服务器固定IP | 动态ip难以区分主从节点ip,因此需要固定 vi /etc/network/interfaces # The primary network interface auto enp0s3 # iface enp0s3 inet dhcp iface enp0s3 inet static address 192.168.0.11 netmask 255.255.255.0 gateway 192.168.0.1 然后重启 |
关闭防火墙 | 如上,查看systemctl status firewalld,看到active(running)说明防火墙在运行 关闭防火墙systemctl stop firewalld 注意: 我的虚拟机安装了多个防火墙,都需要关闭 utw firewalld 都需要关闭 具体关闭方案网上搜:https://blog.youkuaiyun.com/weixin_45177786/article/details/121742158 关闭firewall systemctl disable firewalld 查看两个防火墙状态 ufw status systemctl status firewalld |
映射ip与主机名 | vi /etc/hosts 192.168.0.11 pc1-node1 192.168.0.12 pc1-node2 192.168.0.13 pc1-node3 192.168.0.21 pc2-node1 192.168.0.22 pc2-node2 192.168.0.23 pc2-node3 注意,主机名不要乱写。是linux的主机名,要根据实际的主机名来配置。而不是你想象的Master、Slave等。 我这里有6台机器,1台主,5台从,都需要修改 修改保存后,重启网关 /etc/init.d/dns-clean start /etc/init.d/networking restart 或重启linux(建议重启网关) |
设置ssh无密码登录 | 配置主节点到从节点的免密登录: 在主节点生成密钥 cd ~/.ssh # 若无该目录可先直接创建一个 ssh-keygen -t rsa # 按3次回车到结束 设置本机免密前,试试自己ssh自己需要密码不 -- 加深感受 ssh hadoopMaster11 可见,需要密码的 设置本机免密 cat ./id_rsa.pub >> authorized_keys 看见,多出了authorized_keys文件 再试试ssh本机,是否可以免密了 未免密时,试试ssh到从节点hadoopSlave12,看到需要输入密码 ssh pc1-node2 复制公钥到其他节点(一个一个操作,需输密码) ssh-copy-id -i ~/.ssh/id_rsa.pub pc1-node2 --- 一行一行执行,每行执行完后需要输入对于节点机的密码 ssh-copy-id -i ~/.ssh/id_rsa.pub pc1-node3 ssh-copy-id -i ~/.ssh/id_rsa.pub pc2-node1 ssh-copy-id -i ~/.ssh/id_rsa.pub pc2-node2 ssh-copy-id -i ~/.ssh/id_rsa.pub pc2-node3 免密后,试试ssh到从节点hadoopSlave12,已经不需要输入密码 ssh hadoopSlave12 注:若登入Slave节点时还是需要输入密码或者显示权限不够,则只需要进入Slave节点中输入以下代码即可: chmod 700 ~/.ssh/ chmod 644 ~/.ssh/authorized_keys 依次完成其他从节点的ssh设置 |
安装Hadoop | 所有机器都操作 把Hadoop路径,配置到系统环境变量 vi /etc/profile 添加到后面: export HADOOP_HOME=/usr/data2/program/hadoop/hadoop-3.3.2 export PATH=$PATH:$HADOOP_HOME/bin 保存后,重新加载环境变量 source /etc/profile 进入软件配置目录 cd /usr/data2/program/hadoop/hadoop-3.3.2/etc/hadoop 配置Hadoop的运行变量 vi hadoop-env.sh 添加到后面: export JAVA_HOME=/usr/local/java/jdk8 export HADOOP_HOME=/usr/data2/program/hadoop/hadoop-3.3.2 添加主节点配置 vi core-site.xml <property> <name>fs.default.name</name> <value>hdfs://pc1-node1:9000</value> </property> <property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property> hadoop.proxyuser.root.hosts hadoop.proxyuser.root.groups 是hadoop的权限、组,这里全部设置为*,方便后面使用hive进行连接 配置分布式文件系统副本数、存储位置等 因为我这里是两个区域,每个区域3个节点,共6个节点 但有一个节点是主节点,没有数据。 因此我有5个数据节点。 因此我设置副本数是4,如果有一个区域挂了,至少还有一个数据副本 vi hdfs-site.xml <configuration> <property> <name>dfs.replication</name> <value>4</value> </property> <property> <name>dfs.name.dir</name> <value>/usr/data2/program/hadoop/hdfs/name</value> </property> <property> <name>dfs.data.dir</name> <value>/usr/data2/program/hadoop/hdfs/data</value> </property> <property> <name>dfs.namenode.format.enable</name> <value>true</value> </property> </configuration> 配置分布式计算框架 vi mapred-site.xml <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</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> </configuration> 配置yarn策略 vi yarn-site.xml 这里,要根据自己的主节点机器,修改节点名,也就是yarn.resourcemanager.hostname的值 <configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>pc1-node1</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration> 设置工作机器(配置为从节点) vi workers pc1-node2 pc1-node3 pc2-node1 pc2-node2 pc2-node3 格式化HDFS 第一次启动前,必须格式化 hadoop namenode -format 报错:2022-05-02 19:21:14,936 WARN net.DNS: Unable to determine address of the host -falling back to 'localhost' address 1,host配置时,不要乱写主机名是什么master slaver,要看自己真实的主机名称是什么 2,配置host后,需要重启网络,host才生效,参看前面的host配置步骤 格式化正常:(不应该出现error) |
启动Hadoop 并验证安装是否成功 | 1,赋执行权限 cd /usr/data2/program/hadoop/hadoop-3.3.2 chmod +x -R ./sbin 2,启动,只需要在主节点执行: cd /usr/data2/program/hadoop/hadoop-3.3.2 source ./sbin/start-all.sh 注意启动后,还要检查所有节点机,关闭防火墙,有些服务器防火墙自己又恢复了。。。 查看两个防火墙状态 ufw status systemctl status firewalld 在Master节点和Slave节点分别使用如下命令 jps
若在Master节点上出现了NameNode、ResourceManager、SecondaryNameNode; 且在Slave节点上出现了DataNode、NodeManager。 3.x版本的Hadoop默认带了YARN 则表明Hadoop安装成功。 报错: ERROR: Attempting to operate on hdfs namenode as root ERROR: Attempting to operate on hdfs secondarynamenode as root 等 说明不能以root启动。 但这里,我是用于个人学习的,因此我采用的解决方案是: vi /etc/profile 然后向里面加入如下的内容 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 保存后,输入如下命令使改动生效 source /etc/profile 参考:https://www.cnblogs.com/nihilwater/p/13849396.html 测试集群有没有成功启动 hdfs dfsadmin -report 因为还没写入数据,因此这些数据都是0 root@pc1-node1:/usr/data2/program/hadoop/hadoop-3.3.2# hdfs dfsadmin -report Configured Capacity: 0 (0 B) Present Capacity: 0 (0 B) DFS Remaining: 0 (0 B) DFS Used: 0 (0 B) DFS Used%: 0.00% Replicated Blocks: Under replicated blocks: 0 Blocks with corrupt replicas: 0 Missing blocks: 0 Missing blocks (with replication factor 1): 0 Low redundancy blocks with highest priority to recover: 0 Pending deletion blocks: 0 Erasure Coded Block Groups: Low redundancy block groups: 0 Block groups with corrupt internal blocks: 0 Missing block groups: 0 Low redundancy blocks with highest priority to recover: 0 Pending deletion blocks: 0 |
hadoop安装与启动
最新推荐文章于 2024-09-23 22:04:52 发布