Hadoop集群配置
设计图
就像我们建造房子需要图纸,我们搭建一个集群之前也要先思考怎么安排节点。
- hadoop001:
- Master节点
- NameNode
- ResourceManager
- hadoop002:
- Slave节点
- DataNode
- hadoop003:
- Slave节点
- DataNode
SSH免密登录
一个一个节点的启动很麻烦,我们先配置SSH免密登录,再群起节点
原理
- A把公钥发送给B的过程 == A在B中注册信息
实操
在每个用户的家目录中,都有一个.ssh文件夹。
进入这个目录
输入命令:
- ssh-keygen,获得公钥和私钥
- ssh-copy-id -i id_rsa.pub root@hadoop003,把信息写入远程主机。
- authorized_keys
- 其他主机想要免密登录,就再这个文件中写入信息
- id_rsa
- 私钥
- id_rsa.pub
- 公钥
- known_hosts
- 记录我们访问过哪些主机
配置静态Ip
- BOOTPROTO=static/dhcp 从动态分配路由到静态分配路由
- ONBOOT=yes/or 开机启动
- IPADDR=分配的静态IP地址(可通过ifconfig查看之前的ip再进行分配)
- NETMASK=子网掩码
- GETEWAY=网关(Vmware->虚拟机网络编辑器->NAT设置->查看网关)
- DNS1=ip映射
Hadoop配置文件
core-site.xml
- fs.defaultFS
- 用于指定namenode在哪个机子上开启
- 并且指定datanode把他的信息传递到哪儿
- hadoop.tmp.dir
- 用于存储运行时产生的临时文件
- 用于存储运行时产生的临时文件
hadoop-env.sh
- 修改他的JAVA_HOME目录,替换成我们自己的。配置hadoop的运行环境。
hdfs-site.xml
- dfs.namenode.name.dir
- 保证元数据安全。再设置一个目录存放元数据
- dfs.datanode.data.dir
- datanode存放数据的地方
- dfs.replication
- 设置副本一般有几个
- dfs.namenode.secondary.http-address
- 设置secondarynode存放于哪一台机子。
- 设置secondarynode存放于哪一台机子。
yarn-env.sh
- 修改他的JAVA_HOME目录,替换成我们自己的。
mapred-site.xml
- 首先把mapred-site.xml.template --> mapred-site.xml
- 这个文件用于增加mapreduce配置。jobhistory yarn等等
- mapreduce.framework.name,这个属性,用于指定是否开启yarn管理
yarn-site.xml
- 这个文件用于配置yarn的一些特性
- yarn.nodemanaget.aux-services这个属性用于配置额外的一些功能。shuffle是yarn减轻mapreduce的一个功能,挺有用的。
- yarn.resourcemanager.hostname,这个属性指定我们的resourcemanager放在哪个节点上
slaves
- 这个文件用于哪些节点需要开启datanode
Hosts
- 这个文件用于解析我们设置的hadoop001这样的代号。
踩的几个坑
1.群起节点,发现只有hadoop001启动成功
- 原因:是没有清理干净data 和 log两个文件夹
- 解决方案:清理掉两个文件夹,然后使用hadoop namenode -format 格式化
2.50070中没有datanode/datanode无法连接namenode
- 原因1:没有关闭防火墙
- 解决方案:关闭防火墙。service stop iptables
- 原因2:9000端口被localhost占用,去监听127.0.0.1:9000而不是198.162.x.x:9000
- 解决方案:/etc/hosts 去除localhost即可