1. 创建用户
sudo useradd -m hadoop -s /bin/bash
这条命令创建了可以登陆的 hadoop 用户,并使用 /bin/bash 作为 shell。
接着输入密码:
可为 hadoop 用户增加管理员权限,方便部署,避免一些对新手来说比较棘手的权限问题:
vi /etc/sudoers.
2. 确定主机名
编辑主机名 vi /etc/hostname
编辑IP映射关系 vi /etc/hosts
2. 配置ssh免密登录
检验一台机器是否安装了ssh
which ssh
在该用户根目录下执行,ssh-keygen -t rsa
,三次回车即可。
使用如下命令将秘钥发送到其他机器:
ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@slave3
3. 关闭防火墙
firewall-cmd --state 查看防火墙状态
sudo systemctl stop firewalld.service 关闭防火墙
sudo systemctl disable firewalld.service 永久关闭防火墙
4. 安装JDK
配置环境变量
5. 部署Hadoop
hadoop-env.sh
在文件中添加jdk环境变量
core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.1.100:9000</value>
<description>192.168.1.100为服务器IP地址,其实也可以使用主机名</description>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
<description>该属性值单位为KB,131072KB即为默认的64M</description>
</property>
</configuration>
hdfs-site.xml
配置namenode:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>分片数量,伪分布式将其配置成1即可</description>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/namenode</value>
<description>命名空间和事务在本地文件系统永久存储的路径</description>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>master:50070</value>
</property>
<property>
<name>dfs.blocksize</name>
<value>268435456</value>
<description>大文件系统HDFS块大小为256M,默认值为64M</description>
</property>
<property>
<name>dfs.namenode.handler.count</name>
<value>100</value>
<description>更多的NameNode服务器线程处理来自DataNodes的RPCS</description>
</property>
</configuration>
配置 datenode:
<configuration>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/datanode</value>
<description>DataNode在本地文件系统中存放块的路径</description>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<name> mapreduce.framework.name</name>
<value>yarn</value>
<description>执行框架设置为Hadoop YARN</description>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>1536</value>
<description>对maps更大的资源限制的</description>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx2014M</value>
<description>maps中对jvm child设置更大的堆大小</description>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>3072</value>
<description>设置 reduces对于较大的资源限制</description>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx2560M</value>
<description>reduces对 jvm child设置更大的堆大小</description>
</property>
<property>
<name>mapreduce.task.io.sort</name>
<value>512</value>
<description>更高的内存限制,而对数据进行排序的效率</description>
</property>
<property>
<name>mapreduce.task.io.sort.factor</name>
<value>100</value>
<description>在文件排序中更多的流合并为一次</description>
</property>
<property>
<name>mapreduce.reduce.shuffle.parallelcopies</name>
<value>50</value>
<description>通过reduces从很多的map中读取较多的平行副本</description>
</property>
</configuration>
yarn-site.xml
配置resourcemanager:
<configuration>
<property>
<name>yarn.resourcemanager.address</name>
<value>192.168.1.100:8081</value>
<description>IP地址192.168.1.100也可替换为主机名</description>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>192.168.1.100:8082</value>
<description>IP地址192.168.1.100也可替换为主机名</description>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>192.168.1.100:8083</value>
<description>IP地址192.168.1.100也可替换为主机名</description>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>192.168.1.100:8084</value>
<description>IP地址192.168.1.100也可替换为主机名</description>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.1.100:8088</value>
<description>IP地址192.168.1.100也可替换为主机名</description>
</property>
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>FairScheduler</value>
<description>常用类:CapacityScheduler、FairScheduler、orFifoScheduler</description>
</property>
<property>
<name>yarn.scheduler.minimum</name>
<value>100</value>
<description>单位:MB</description>
</property>
<property>
<name>yarn.scheduler.maximum</name>
<value>256</value>
<description>单位:MB</description>
</property>
<property>
<name>yarn.resourcemanager.nodes.include-path</name>
<value>nodeManager1, nodeManager2</value>
<description>nodeManager1, nodeManager2分别对应服务器主机名</description>
</property>
</configuration>
配置nodemanager:
<configuration>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>256</value>
<description>单位为MB</description>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>90</value>
<description>百分比</description>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/usr/local/hadoop/tmp/nodemanager</value>
<description>列表用逗号分隔</description>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/usr/local/hadoop/tmp/nodemanager/logs</value>
<description>列表用逗号分隔</description>
</property>
<property>
<name>yarn.nodemanager.log.retain-seconds</name>
<value>10800</value>
<description>单位为S</description>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce-shuffle</value>
<description>Shuffle service 需要加以设置的MapReduce的应用程序服务</description>
</property>
</configuration>
workers
在worker中添加从节点主机名
6. 启动Hadoop
格式化NameNode: hadoop namenode -format
启动:start-dfs.sh