环境:系统用的是ubuntu15.04 Hadoop2.7.3
虚拟机 master-hadoop ip:192.168.116.129
虚拟机 slave1-hadoop ip:192.168.116.130
虚拟机 slave2-hadoop ip:192.168.116.131
Hadoop 集群的安装配置大致为如下流程:
- 新建一台虚拟机作为 Master
- 在 Master 节点上配置安装 SSH server、安装 Java 环境
- 在 Master 节点上安装 Hadoop,并完成配置,为虚拟机建立快照(可选)
- 然后在克隆出另外两个虚拟机,修改一些配置
- 在 Master 节点上开启 Hadoop
1 新建虚拟机进行网路配置
因为我新建完虚拟机,网络就配置好了,用的是nat模式,ip为192.168.116.129 能上网
修改主机的名字为 master-hadoop
sudo gedit /etc/hostname
修改hosts文件
sudo gedit /etc/hosts
安装ssh,安装之前将 源改为中国的,
sudo apt-get install openssh-server sudo apt-get install openssh-client
然后 ssh localhost 看看能不能连上,
配置ssh无密码登录节点
cd ~/.ssh # 如果没有该目录,先执行一次ssh localhost rm ./id_rsa* # 删除之前生成的公匙(如果有) ssh-keygen -t rsa cat ./id_rsa.pub >> ./authorized_keys
然后 ssh localhost 这次不用输密码即可登录(记得exit)
安装之前的配置已经完成,下面安装hadoop
配置path变量
sudo gedit /etc/profile //在末尾写上 注意hadoop地址 HADOOP_HOME=/usr/local/hadoop PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export HADOOP_HOME PATH
关闭防火墙
sudo ufw disable
修改 /usr/local/hadoop/etc/hadoop 中的5个配置文件
1 slaves
slave1-hadoop
slave2-hadoop
2. core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master-hadoop:9000</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/tmp</value> </property> </configuration>
3.hdfs-site.xml
<configuration> <property> <name>heartbeat.recheckinterval</name> <value>10</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration>
4.mapred-site.xml (可能需要先重命名,默认文件名为 mapred-site.xml.template)
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>master-hadoop:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master-hadoop:19888</value> </property> </configuration>
5.yarn-site.xml
<configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.resourcemanager.address</name> <value>master-hadoop:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master-hadoop:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master-hadoop:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master-hadoop:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master-hadoop:8088</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> </configuration>
至此,hadoop的环境在一台虚拟机上就配置好了
然后把这台虚拟机克隆两份,配置slave1-hadoop和slave2-hadoop的ip和hostname
然后环境就搭建好了
测试:
ssh无密码连接,都不用输入密码,
ssh localhost ssh slave1-hadoop ssh slave2-hadoop
接下来就是启动hadoop 验证配置了,在master-hadoop上运行
hdfs namenode -format # 首次运行需要执行初始化,之后不需要
启动hadoop
start-dfs.sh start-yarn.sh mr-jobhistory-daemon.sh start historyserver
通过命令 jps
可以查看各个节点所启动的进程。正确的话,在 Master 节点上可以看到 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 进程
在 Slave 节点可以看到 DataNode 和 NodeManager 进程
缺少任一进程都表示出错