服务器名称 | 搭建服务 |
---|---|
node01 | DataNode、NodeManager、NameNode、SecondaryNameNode、ResourceManager |
node02 | DataNode、NodeManager |
node03 | DataNode、NodeManager |
服务器名称 | 搭建服务 |
---|---|
node01 | NameNode、SecondaryNameNode |
node02 | ResourceManager |
node03 | DataNode、NodeManager |
node04 | DataNode、NodeManager |
node05 | DataNode、NodeManager |
服务名称 | 版本 |
---|---|
centos | centos6.7 |
java | jdk-7u80-linux-x64.tar.gz |
hadoop | centos6.7-hadoop-2.6.4.tar.gz(已源码编译) |
1、编辑配置文件
vi /etc/sysconfig/network
HOSTNAME=主机名
2、主机名立即生效
hostname 主机名
3、查看主机名
hostname
1、编辑配置文件
vi /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=static
IPADDR=xxx.xxx.xxx.xxx
NETMASK=255.255.255.0
GATEWAY=xxx.xxx.xxx.xxx
DNS1=网关地址
DNS2=8.8.8.8
ps.(
克隆主机第一次配置时需要删除HWADDR
之后执行rm -rf /etc/udev/rules.d/70-persistent-net.rules
最后reboot
)
2、重启服务
service network restart
在非生产环境可以直接关闭防火墙
1、关闭防火墙
service iptables stop
2、关闭防火墙开机自启
chkconfig iptables off
3、查看启动级别
chkconfig iptables --list
1、编辑配置文件
vi /etc/hosts
IP 主机名
2、ping各主机
ping 主机名
3、将配置文件发送给各主机
scp -r /etc/hosts root@ip地址:/etc/
4、尝试互相ping
ping 主机名
1、在主节点生成公钥私钥
ssh-keygen -t rsa
一路回车
2、发送给其他主机(含主节点)
ssh-copy-id root@主机名
3、测试是否成功
ssh 主机名
手动同步
date -s "2019-01-01 00:00:00"
1、卸载openjdk
(1)查看已安装java
rpm -qa | grep java
(2)删除openjdk
rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.i686
2、解压
tar -zxvf jdk.tar.gz
3、添加环境变量
vi /etc/profile
export JAVA_HOME=/home/apps/jdk...
export PATH=$PATH:$JAVA_HOME/bin
4、环境变量生效
source /etc/profile
1、lrzsz
(1)yum install lrzsz -y
(2)rz
2、SCRT下alt+p
3、
(1)直接拖到SCRT
(2)选择send Zmodem...
tar -zxvf centos6.7-hadoop-2.6.4.tar.gz
vi /etc/profile
export HADOOP_HOME=/home/apps/hadoop...
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
vi hadoop/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/home/apps/jdk...
vi hadoop/etc/hadoop/core-site.xml
在 中间添加
fs.defaultFS
hdfs://node01:8020
hadoop.tmp.dir
/home/data/tmp
vi hadoop/etc/hadoop/hdfs-site.xml
在 中间添加
dfs.replication
3
dfs.secondary.http.address
node01:50090
dfs.namenode.name.dir
/home/data/namenode,path2,path3,nfs://...
dfs.datanode.data.dir
/home/data/datanode,path2,path3...
cp hadoop/etc/hadoop/mapred-site.xml.template hadoop/etc/hadoop/mapred-site.xml
vi hadoop/etc/hadoop/mapred-site.xml
在 中间添加
mapreduce.framework.name
yarn
vi hadoop/etc/hadoop/yarn-site.xml
在 中间添加
yarn.resourcemanager.hostname
node01
yarn.nodemanager.aux-services
mapreduce_shuffle
scp -r /home/apps/hadoop... root@node02:/home/apps
scp -r /etc/profile root@node02:/etc/profile
source /etc/profile
在主节点格式化
hadoop namenode -format
独立操作(在各节点)
hadoop-daemon.sh start/stop namenode
hadoop-daemon.sh start/stop datanode
hadoop-daemon.sh start/stop secondarynamenode
自动操作(在主节点)
(1)添加节点目录
vi /home/apps/hadoop/etc/hadoop/slaves
node01
node02
node03
(2)cp到其他节点
scp -r /home/apps/hadoop/etc/hadoop/slaves root@node02:/home/apps/hadoop/etc/hadoop/
(3)
start/stop.dfs.sh
start/stop.yarn.sh
1.jps
2.访问hdfs
ip:50070
3.访问yarn
ip:8088
4.测试mapreduce(mapreduce)
hadoop jar /home/apps/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar pi 4 8
//以下参数是在用户自己的mr应用程序中配置就可以生效
(1) mapreduce.map.memory.mb: 一个Map Task可使用的资源上限(单位:MB),默认为1024。如果Map Task实际使用的资源量超过该值,则会被强制杀死。
(2) mapreduce.reduce.memory.mb: 一个Reduce Task可使用的资源上限(单位:MB),默认为1024。如果Reduce Task实际使用的资源量超过该值,则会被强制杀死。
(3) mapreduce.map.cpu.vcores: 每个Map task可使用的最多cpu core数目, 默认值: 1
(4) mapreduce.reduce.cpu.vcores: 每个Reduce task可使用的最多cpu core数目, 默认值: 1
//应该在yarn启动之前就配置在服务器的配置文件中才能生效
(5) yarn.scheduler.minimum-allocation-mb 1024 给应用程序container分配的最小内存
(6) yarn.scheduler.maximum-allocation-mb 8192 给应用程序container分配的最大内存
(7) yarn.scheduler.minimum-allocation-vcores 1
(8)yarn.scheduler.maximum-allocation-vcores 32
//shuffle性能优化的关键参数,应在yarn启动之前就配置好
(10) mapreduce.task.io.sort.mb 100 //shuffle的环形缓冲区大小,默认100m
(11) mapreduce.map.sort.spill.percent 0.8 //环形缓冲区溢出的阈值,默认80%
(1) mapreduce.map.maxattempts: 每个Map Task最大重试次数,一旦重试参数超过该值,则认为Map Task运行失败,默认值:4。
(2) mapreduce.reduce.maxattempts: 每个Reduce Task最大重试次数,一旦重试参数超过该值,则认为Map Task运行失败,默认值:4。
(3) mapreduce.map.failures.maxpercent: 当失败的Map Task失败比例超过该值为,整个作业则失败,默认值为0. 如果你的应用程序允许丢弃部分输入数据,则该该值设为一个大于0的值,比如5,表示如果有低于5%的Map Task失败(如果一个Map Task重试次数超过mapreduce.map.maxattempts,则认为这个Map Task失败,其对应的输入数据将不会产生任何结果),整个作业扔认为成功。
(4) mapreduce.reduce.failures.maxpercent: 当失败的Reduce Task失败比例超过该值为,整个作业则失败,默认值为0.
(5) mapreduce.task.timeout: Task超时时间,经常需要设置的一个参数,该参数表达的意思为:如果一个task在一定时间内没有任何进入,即不会读取新的数据,也没有输出数据,则认为该task处于block状态,可能是卡住了,也许永远会卡主,为了防止因为用户程序永远block住不退出,则强制设置了一个该超时时间(单位毫秒),默认是300000。如果你的程序对每条输入数据的处理时间过长(比如会访问数据库,通过网络拉取数据等),建议将该参数调大,该参数过小常出现的错误提示是“AttemptID:attempt_14267829456721_123456_m_000224_0 Timed out after 300 secsContainer killed by the ApplicationMaster.”。
设置以下几个参数:
mapreduce.framework.name=local
mapreduce.jobtracker.address=local
fs.defaultFS=local
(1) mapreduce.map.speculative: 是否为Map Task打开推测执行机制,默认为false
(2) mapreduce.reduce.speculative: 是否为Reduce Task打开推测执行机制,默认为false
(3) mapreduce.job.user.classpath.first & mapreduce.task.classpath.user.precedence:当同一个class同时出现在用户jar包和hadoop jar中时,优先使用哪个jar包中的class,默认为false,表示优先使用hadoop jar中的class。
(4) mapreduce.input.fileinputformat.split.minsize: FileInputFormat做切片时的最小切片大小,(5)mapreduce.input.fileinputformat.split.maxsize: FileInputFormat做切片时的最大切片大小
(切片的默认大小就等于blocksize,即 134217728)