环境:CentOS7 1G
前期准备:
1、4台机器(1master+3slave)虚拟机,为减少放开端口的操作,直接关闭防火墙
2、安装java环境,配置环境变量,此处使用JDK8
3、上传hadoop安装包,此处使用2.7.7版本,解压至/usr/local下
4、配置host,在/etc/hosts下(hadoop1,hadoop2,hadoop3,hadoop4)
下面开始搭建过程:
1、修改/usr/local/hadoop-2.7.7/etc/hadoop下的hadoop-env.sh文件中JAVA_HOME为本地的绝对路径
2、修改core-site.xml
<!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->
<!--
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.108.131:9000</value>
</property>
-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoopdb/tmp</value>
</property>
3、修改hdfs-site.xml
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- 当不使用hostname而是ip时配置,hostname的配置路径/etc/hosts -->
<!--
<property>
<name>dfs.namenode.datanode.registration.ip-hostname-check</name>
<value>false</value>
</property>
-->
4、修改mapred-site.xml
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
5、修改yarn-site.xml
<!-- 此处采用hostname的方式 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop1</value>
</property>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
6、配置Hadoop环境变量
在/etc/profile中添加
export HADOOP_HOME=/itcast/hadoop-2.4.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
然后source /etc/profile
7、在其他3个节点上进行相同操作,同样的配置。简便操作就是使用scp传给各个节点
8、格式化namenode,只在namenode节点执行
hdfs namenode -format
9、以下测试单个启动方式:
启动namenode,在1号机器上(ip:131)启动,启动脚本在/usr/local/hadoop-2.7.7/sbin/
hadoop-daemon.sh start namenode
通过jps命令查看是否启动完成
还可以通过页面的方式查看
ip:50070
启动其他3个datanode
hadoop-daemon.sh start datanode
我之前配置的ip,后面启动成功后又改为hostname,启动节点会失败,需要将/home/hadoop/hadoopdb/tmp文件夹下的文件删除后重新启动。
10、还可以通过hadoop提供的脚本一步启动
在sbin目录下的slave中添加datanode
hadoop2
hadoop3
hadoop4
然后配置ssh免密登录
生成秘钥
ssh-keygen
分发到本地和远程
ssh-copy-id hadoop1
ssh-copy-id hadoop2
ssh-copy-id hadoop3
ssh-copy-id hadoop4
然后通过sbin下的
start-all.sh
可以直接全部启动,同样的,全部关闭就是stop-all.sh脚本直接执行就可以