Hadoop集群搭建
一、虚拟机设置
准备三台虚拟机,内存2g,硬盘20g
-
设置hostname,master/slave1/slave2
- CentOS6版本修改network文件:vi /etc/sysconfig/network,新增:HOSTNAME=marster
- CentOS7版本通过命令:hostnamectl set-hostname master
- 设置网络
- 配置ip
- vim /etc/sysconfig/network-script/ifcfg-exx
- onboot=yes
- bootproto=static
- 添加:
- IPADDR=192.168.199.111(IP地址)
- NETMASK=255.255.255.0(子网掩码)
- GATEWAY=192.168.199.1(网关)
- DNS1=192.168.199.1(dns)
- 网络设置为桥接,手动配置IP,只需要仿照主机网卡的ip地址,设置一个同网段的地址即可。
- 配置host
- vi /etc/hosts
- 192.168.43.101 master
- 192.168.43.102 slave1
- 192.168.43.103 slave2
- 关闭防火墙
- centos7版本:
- systemctl stop firewalld 临时关闭防火墙
- Systemctl disable firewalld 关闭开机启动
- centos6版本:
- service iptables stop
- chkconfig iptables off
- centos7版本:
- 关闭selinux
- vi /etc/selinux/config
- SELINUX=disable
- 配置ssh 免密登陆(运行hadoop用户去配置)
- 因为mater启动时,需要远程把slave机器启动起来,需要有权限访问slave机器,是通过ssh访问的,不配置免密登陆的话,每次访问都要输入密码,比较繁琐
- 生成公私钥: ssh-keygen -t rsa
- ssh-copy-id spring@master
- ssh-copy-id spring@slave1
- ssh-copy-id spring@slave2
二、安装环境
- 安装JDK
- 查询系统是否安装jdk,rpm -qa|grep java
- 卸载已安装jdk,rpm -e --nodeps [java]
- 解压jdk安装包
- vim /etc/profile
- export JAVA_HOME=/home/spring/software/jdk1.8.0_231
- export PATH=$PATH:$JAVA_HOME/bin
- source /etc/profile
- 安装hadoop
- 拷贝安装包
- scp ./hadoop-3.1.1.tar.gz spng@192.168.43.101:/home/spring/
- 解压,用运行hadopp的用户解压
- tar -zxf hadoop-3.1.1.tar.gz
- 目录介绍
- bin 用yarn或者hdfs的时候,查看hdfs系统的结构,里面的数据,需要bin里面的东西
- sbin 启动的一些脚本
- etc 存放一些配置文件
- 修改配置文件
- core-site.xml 配置namenode地址的和端口、临时文件的路径
- hdfs.site.xml hdfs的一些配置,副本数,namenode存储路径,
- yarn.site.xml yarn的配置
- mapred.site.xml mapreduce配置
- workers 配置运行datanode/nodemanager的节点机器名
- hadoop-env.sh 配置javahome
- 创建目录
- 先创建data目录,再把data目录的owner给运行hadoop的用户
- chown -R spring /data
- 然后切换到hadoop用户创建如下目录
- hdfs namenode目录:mkdir -p /data/hadoop/hdfs/namenode
- hdfs datanode目录:mkdir -p /data/hadoop/hdfs/datanode
- hdfs tmp目录:mkdir -p /data/hadoop/tmp
- yarn nodemanager 文件目录:mkdir -p /data/hadoop/yarn/nodemanager
- yarn log文件目录:mkdir -p /data/hadoop/yarn/logs
- 先创建data目录,再把data目录的owner给运行hadoop的用户
- 设置环境变量
- 因为要用到bin目录和sbin目录的命令,所以在环境变量里增加它们
- export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- 拷贝安装包
三、启动&验证
- 格式化,初始化下namenode
- hdfs namenode -format
- 出现这种错,可能就是权限问题,重新创建目录,并设置好权限
- 2019-12-31 14:01:47,997 WARN net.DNS: Unable to determine local hostname -falling back to 'localhost' java.net.UnknownHostException: bogon: bogon: 未知的名称或服务
- 成功会在namenode目录下创建文件,可以使用查看下文件列表
- ll /data/hadoop/hdfs/namenode/current
- 启动hdfs
- start-dfs.sh
- 启动yarn
- start-yarn.sh
- 验证
- hdfs dfs -mkdir /user
- hdfs dfs -ls
- 上传一个文件
- hdfs dfs -copyFromLocal /home/spring/software/hadoop-3.1.2/etc/hadoop/workers /user
- 跑一个yarn的例子,求pi的一个任务
- hadoop jar hadoop-mapreduce-examples-3.1.1.jar pi 5 10