大一Hadoop集群搭建总结
首先是要在Linux系统上运行,安装虚拟机VMware Workstation和centos系统等
1、下载安装VMware Workstation(虚拟机),需要centos系统。jdk和hadoop在linux运行,xshell,xftp在windows方便与虚拟机联系。安装Linux系统新建名为master,为主节点,我安装centos6.8的Linux系统,配置master,设置Hostname:master.centos.com,设置登录密码,安装Minimal最小的 ,登录成功后.
任务是:搭建一个hadoop完全分布式模式。设置linux网络。(一个主节点三个从节点)
2、Master主节点设置ip为192.168.137.9和
slave1,slave2,slave3 分别ip为192.168.137.10 、 192.168.137.11 、192.168.137.12(ip后缀只要不超过范围就好)
设置linux网络,固定ip,进入linux系统,
在window系统操作打开本地已连接的网络,共享网络,打开虚拟机网络,这样是为了和虚拟机共享,编辑虚拟机上的网络设置,VMnet8设置为NAT模式IP192.168.137.0掩码255.255.255.0,dhcp修改后缀为137.几(和节点配置的ip能对应),网关192.168.137.1
修改linux中网络设置 (wq保存退出 q!不保存退出)
vi /etc/sysconfig/network-scripts/ifcfg-etho
设置为静态地址static 开机自启yes
添加IPADDR(ip地址)=192.168.137.9
NETMASK(子网掩码)=255.255.255.0
GATEWAY(网关)=192.168.137.1
DNS1(域名)=192.168.137.1
网卡设备名和mac地址需要对应 uuid可以修改不同的
service network restart重启服务(需要先将克隆过来的节点需要修改网卡名eth1和eth0修改对应mac地址ifconfig -a 看mac地址和网卡名称 否则这个会报错不存在)
一般只需要修改 /etc/hosts (添加ip对应主机名字)和 /etc/sysconfig/network(修改主机名)
这是网络能ping通过,有时候不好使可能换个ip就好了。能连接xshell就行(代码可能有误)
安装java
安装java1.7.0_80的版本,设置java在windows10环境变量:
添加用户变量CLASSPATH = .;%JAVA_HOME%\jre\lib\rt.jar;.;
添加系统变量:JAVA_HOME = jdk的1.7.0_80的安装目录
编辑环境变量里面添加 %JAVA_HOME%\bin
环境变量配好,
安装连接xshell添加master地址192.168.137.9
设置登录密码将java安装包jdk-7u80-linux-x64.rpm通过xftp放入opt
进入cd /opt
rmp -ivh jdk TAB就可直接出来 安装完成后
java -version验证通过成功
配置hadoop
然后把hadoop2.6.4通过xftp上传opt中解压修改7个配置文件
上传操作为:
tar -zxf /opt/hadoop-2.6.4.tar.gz -C /usr/local/
进入修改7个配置文件
cd /usr/local/hadoop-2.6.4/etc/hadoop
etc目录下的hadoop里面的文件需要修改
1、hadoop-env.sh是hadoop运行环境配置。需要修改jdk的位置
export JAVA_HOME=/usr/java/jdk1.7.0_80
2、yarn-env.sh是YARN框架运行环境,同理需要修改JDK位置
export JAVA_HOME=/usr/java/jdk1.7.0_80
3、mapreduce-site.xml 是服务器机器名需要修改master
4、yarn-site.xml 是YARN框架的配置,在开始命名了一个yarn.rescourcemanager.hostname的变量 添加mater
5、slaves文件有slave节点的信息,slave1 slvae2 slave3
6、hdfs-site.xml是HDFS的配置文件
7、设置ip映射 主机名与ip地址的映射
vi /etc/hosts
192.168.137.9 master master.centos.com
192.168.137.10 slave1 slave1.centos.com
192.168.137.11 slave2 slave2.centos.com
192.168.137.12 slave3 slave3.centos.com
1、
vi core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/log/hadoop/tmp</value>
</property>
</configuration>
2、
vi hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_80
3、
vi yarn-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_80
4、
cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
5 、
vi yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>${yarn.resourcemanager.hostname}:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>${yarn.resourcemanager.hostname}:8030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>${yarn.resourcemanager.hostname}:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.https.address</name>
<value>${yarn.resourcemanager.hostname}:8090</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>${yarn.resourcemanager.hostname}:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>${yarn.resourcemanager.hostname}:8033</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/data/hadoop/yarn/local</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/data/tmp/logs</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://master:19888/jobhistory/logs/</value>
<description>URL for job history server</description>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>512</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>4096</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>2048</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>1</value>
</property>
6 、
vi slaves
slave1
slave2
slave3
7 、
vi hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///data/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///data/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
8 、
#设置IP映射
编辑vi /etc/hosts
192.168.137.9 master master.centos.com
192.168.137.10 slave1 slave1.centos.com
192.168.137.11 slave2 slave2.centos.com
192.168.137.12 slave3 slave3.centos.com
克隆几个节点
完成后克隆master节点 slave1 slave2 slave3
slave1,2,3都需要修改ip地址
slave1:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改ip 192.168.137.11
删除HWADDR地址和UUID唯一码,然后重启网络:
service network restart
执行(centos系统清除网卡信息 )
rm /etc/udev/rules.d/70-persistent-net.rules命令
修改 /etc/sysconfig/network文件修改为slave1
vi /etc/sysconfig/network
HOSTNAME=slave1.centos.com
重启
reboot
进入Linux中
service network restart
连接xshell 192.168.137.10
slave2:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
删除HWADDR UUID
修改ip 192.168.137.11
清除网卡信息
rm /etc/udev/rules.d/70-persistent-net.rules
vi /etc/sysconfig/network
修改为HOSTNAME=slave2.centos.com
reboot
service network restart
连接xshell 192.168.137.11
salve3:
vi /etc/sysconfig/network-scripts/ifcfg-eth0删除 UUID HWADDR
修改ip 192.168.137.12
rm /etc/udev/rules.d/70-persistent-net.rules 清除网卡信息
vi /etc/sysconfig/network
修改为HOSTNAME=slave3.centos.com
reboot
service network restart
连接xshell 192.168.137.12
SSH免密登录
在master输入命令:
ssh-keygen -t rsa 回车几次
连接远程机器(有四个节点):
ssh-copy-id -i/root/.ssh/id_rsa.pub master
ssh-copy-id -i/root/.ssh/id_rsa.pub slave1
ssh-copy-id -i/root/.ssh/id_rsa.pub slave2
ssh-copy-id -i/root/.ssh/id_rsa.pub slave3
验证无密钥登录
ssh slave1 exit 退出slave1
ssh slave2 exit 退出slave2
ssh slave3 exit 退出slave3
时间同步NTP
建立快照(恢复之前)ntp前
打开虚拟机虚拟机里面设置已连接,(挂载 清除 安装)
进行挂载 mount /dev/dvd /media
清除:yum clean all
安装NTP命令:yum -y install ntp
显示 complete完成
slave1 2 3分别执行(挂载清除安装)
mount /dev/dvd/media
yum clean all
yum -y install ntp
然后master执行
vi /etc/ntp.conf
注释掉server开头的加#
添加地址
restrict 192.168.137.0 mask 255.255.255.0 nomodify notrap
server 127.127.1.0
fudge 127.127.1.0 stratum 10
slave1,2,3分别执行
vi /etc/ntp.conf
注释掉server开头的加#
添加地址
restrict 192.168.137.0 mask 255.255.255.0 nomodify notrap
server 127.127.1.0
fudge 127.127.1.0 stratum 10
然后4个节点永久关闭防火墙
service iptables stop & chkconfig iptables off
master启动
ntpd master执行
service ntpd start & chkconfig ntpd on(开机ntpd自动启动永久)
在slave1,2,3上执行
ntpdate master 即可同步时间
在slave1,2,3上执行
service ntpd start & chkconfig ntpd on
开机ntpd自动启动永久ntp服务
启动集群
启动集群前可建立快照
vi /etc/profile 添加JAVA_HOME Hadoop路径
最后添加下面两行
export HADOOP_HOME=/usr/local/hadoop-2.6.4
export PATH=$HADOOP_HOME/bin:$PATH:/usr/java/jdk1.7.0_80/bin
source /etc/profile 修改生效
重复在在slave1,2,3
vi /etc/profile
最后添加
export HADOOP_HOME=/usr/local/hadoop-2.6.4
export PATH=$HADOOP_HOME/bin:$PATH:/usr/java/jdk1.7.0_80/bin
source /etc/profile 生效
格式化NameNode
进入opt cd /opt
解压缩
tar -zxf hadoop-2.6.4.tar.gz
cd /opt/hadoop-2.6.4/bin(进bin目录)
hadfs namenode -format (格式化)
启动集群进入hadoop安装目录sbin下
cd /usr/local/hadoop-2.6.4/sbin
./start-all/sh(直接启动两个)
./mr-jobhistory-daemon.sh start historyserver
jps命令查看进程图
windows系统hosts文件设置
C盘下 System32\divers\etc
192.168.137.9 master master.centos.com
192.168.137.10 slave1 slave1.centos.com
192.168.137.11 slave2 slave2.centos.com
192.168.137.12 slave2 slave3.centos.com
测试操作
确保启动集群启动了,jps可以测试下
master下每次进入hadoop安装目录(sbin)目录下
cd /usr/local/hadoop-2.6.4/sbin
执行启动集群:
./start-dfs.sh
./start-yarn.sh
./start-all.sh(直接启动两个)
./mr-jobhistory-daemon.sh start historyserver
jps测试
测试:浏览器访问地址
http://master:50070 NameNode集群的存储系统信息
http://master:50070/dfshealth.jps 文件存储目录HDFS监控 各节点信息
http://master:8088 ResourceManager YARN监控 查看集群信息
http://master:19888 MapReduceJobHistory Server 日志监控
集群data/hadoop/hdfs/name/current VERSION 下有id号
操作:hdfs dfsadmin -report
-live在线 -dead失效的 -decommissioning停用的hdfs
http://master:50075
创建目录:hdfs dfs -mkdir
hdfs dfs -mkdir -p /多级目录
上传文件:
hdfs dfs -copyFromLocal /路径文件 /目标路径 拷贝到hdfs文件系统
moveFromLocal 移动到HDFS文件系统
-put 上传到HDFS文件系统
下载文件
hdfs dfs -copyToLocal /文件 /本地 HDFS拷贝到本地
hdfs dfs -get /hdfs文件 /本地
查看文件
hdfs dfs -cat /hdfs文件所在地
-tail输出HDFS文件最后1024字节
删除文件/目录
hdfs dfs -rm -f /hdfs上的文件 删除HDFS上的文件
hdfs dfs -rmdir /目录 删除一个目录
hadoop fs -rm -r -skipTrash /Test01/list/lisi(删除文件)
hadoop fs -rm -r -skipTrash /Test01(删除文件夹)
运行MapReduce任务
jar包在 /usr/local/hadoop-2.6.4/share/hadoop/mapreduce
hadoop jar包hadoop-mapreduce-examples-2.6.4.jar 模板名称 文件所在目录 文件输出目录
模块
如:wordcount频数统计
1、hadoop jar /opt/hadoop-2.6.4/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.4.jar wordcount /intput /output
同时提交多个MapReduce任务 msater:8088监控集群在RUNNING
Kill Application可以Killed终止掉