这是我参与8月更文挑战的第23天,活动详情查看:8月更文挑战
WangScaler: 一个用心创作的作者。
声明:才疏学浅,如有错误,恳请指正。
上篇文章使用虚拟机配置Hadoop集群环境的搭建我们搭建了hadoop的部分环境,这篇文章我们继续搭建我们的环境,结合这两篇文章hadoop的基本环境就搭建好了。
安装hadoop
提前安装jdk,并下载hadoop的安装包。 上传hadoop的安装包到三台虚拟机上。可以使用mobaxterm,这个工具集成了xshell和xftp,并且比这两款软件更好用,界面也更加美观,强烈推荐大家使用。
解压hadoop的压缩包
tar -zxf hadoop-2.6.4.tar.gz -C /usr/local
配置虚拟机的环境
- 1、修改三台机器的host文件
vim /etc/host
192.168.253.130 master
192.168.253.131 slave1
192.168.253.132 slave2
- 2、修改hostname
vim /etc/sysconfig/networkmaster的机器修改成以下内容
hostname=master
slave1机器修改成
hostname=slave1
依次类推,你有几个节点修改几个。
修改hadoop的配置文件
cd /usr/local/hadoop-2.6.4/etc/hadoop/
- 1、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>
这个配置用来指定namenode的地址hdfs://master:8020以及指定使用hadoop时产生文件的存放目录。
- 2、hadoop-env.sh 引入java的环境,所以一定要提前准备好java的环境,如何安装jdk可自行百度,没什么难度。
export JAVA_HOME=/usr/java/jdk1.7.0_80
- 3、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>
这个配置用来指定hdfs中namenode的存储位置和指定hdfs中datanode的存储位置 同时指定hdfs保存数据的副本数量为3。
- 4、mapred-site.xml
cp mapred-site.xml.template mapred-site.xml通过模板文件生成mapred-site的文件,修改后的内容如下:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- jobhistory properties -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
指定hadoop以后Map/Reduce运行在YARN上
- 5、yarn-site.xml
<configuration>
<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>
</configuration>
指定nomenodeManager获取数据的方式是shuffl以及指定ResourceManager的地址
注意:如果你没有slave2,只有一个节点的话,配置文件不同。 单节点需要降低配置,否则导致运算时间过长。 单节点的配置文件可通过CSDN中的资源下载Hdoop单节点yarn-site.xml配置文件,也可以直接评论找我获取。
修改slaves文件
vim slaves 修改slaves文件,修改后的内容如下:
ssh免密登陆
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
输入shh slave1 测试可以无密码登陆slave1
配置时间同步问题
安装ntp
yum install -y ntp
注意:我在这里安装时出现错误提示
没有挂载media,重新挂载一边即可。
修改master机器vim /etc/ntp.conf。
注释server开头行并添加
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
server 127.127.1.0
fudge 127.127.1.0 stratum 10
因为我们这里使用的虚拟机,为了防止防火墙的问题,我们直接关闭防火墙,如果你是真实的服务器,切记不要这么干。
service iptables stop & chkconfig iptables off
service ntpd start & chkconfig ntpd on
在子节点上执行 ntpdate master。
以上最基本的hadoop环境就搭建完毕了。
来都来了,点个赞再走呗!
关注WangScaler,祝你升职、加薪、不提桶!