在搭建集群式要先安装jdk和hadoop,本文用的时Centos6.8,jdk8,hadoop2.7.3
JDK安装参考:https://blog.csdn.net/woainiqazwsx123/article/details/83016453
Hadoop安装
在用户目录下新建一个soft目录将hadoop压缩包解压到当前目录下
创建软链接
$ ln -s hadoop-2.7.3 hadoop
配置环境变量
JAVA_HOME=/home/hyxy/soft/jdk
HADOOP_HOME=/home/hyxy/soft/hadoop
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JAVA_HOME HADOOP_HOME
export PATH
$ source .barches
配置完后输入hadoop version 命令查看是否配置成功
伪分布式
修改/hadoop-2.7.3/etc/hadoop/下的两个配置文件
修改core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
localhost的位置写的是自己的主机名
修改hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
1的位置是节点数,因为是伪分布,只有一台机器,所以是1
ssh免密登录
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 0600 ~/.ssh/authorized_keys
格式化文件系统
$ hdfs namenode -format
如果出现错误: JAVA_HOME is not set and could not be found.
修改hadoop-env.sh
大约25行左右指定JAVA_HOME路径:export JAVA_HOME=/home/hyxy/soft/jdk
启动NameNode和DataNode
$ sbin / start-dfs.sh
注意:如果格式化了两次可能会出现错误,可以将/tmp/hsperfdata_hyxy删除,之后再格式化,启动服务
完全分布式
首先最少需要有三台虚拟机在配置好jdk和hadoop后进行克隆,克隆后可能会出现网络问题可参考:VM虚拟机克隆无法设置静态IP
配置ssh免密登录
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
在三台虚拟机上都要生成密钥,生成后将生成后的密钥发送到其中一个虚拟机上执行第二条命令,将密钥添加进去,依次继续,使得三台虚拟机上都有彼此的密钥
配置hadoop配置文件
修改/hadoop-2.7.3/etc/hadoop/下的配置文件
core-site.xml
<configuration>
<!--默认文件系统的名称。一个URI的方案和权限决定文件系统的实现。的uri的方案确定config属性(fs. schema .impl)命名文件系统实现类。uri的权限已经被使用确定文件系统的主机、端口等。指定主节点位置,提供一个对外的接口供其他程序使用-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<!--其他临时目录的基础hadoop系统临时目录(格式化后的namenode和datanode)-->
<name>hadoop.tmp.dir</name>
<!--下面写的是自己定的目录-->
<value>/home/hyxy/soft/tmp</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<!--副本数-->
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<!--参考hadoop权威指南296页-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<!--指定resourcemanager所在主机-->
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<!--指定mr任务在哪个上面运行(本地、经典和yarn)-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
slaves
master
slave1
slave2
将配置好的hadoopp配置文件使用scp命令发送到其他两台机器上
格式化namenode,最好在master上进行
$ hdfs namenode -format
启动集群
start-all.sh 或 start-dfs.sh和start-yarn.sh 推荐使用第二种方法开启服务