第一步:准备三台虚拟机并创建3个hadoop用户
修改hosts文件如下: sudo vim /etc/hosts
- 127.0.0.1 localhost
- #127.0.1.1 ubuntu-14.04-Server ubuntu-14 #一定要注释掉
- 192.168.1.100 Master
- 192.168.1.101 Slave01
- 192.168.1.102 Slave02
并修改各台主机对应的主机名: sudo vim /etc/hostname
Master
第二步:三台主机创建新用户且都设置ssh免密码登陆
首先每台主机创建一个新用户叫hadoop。方法如下:
- sudo useradd -m hadoop -s /bin/bash
- sudo passwd hadoop
- sudo adduser hadoop sudo
- gpasswd -a hadoop root
#这里的hadoop是自己随意设置的用户名 但3台服务器要统一用户名
其次每台机器上安装ssh:sudo apt-get install openssh-server
第三步:安装jdk1.8
将jdk安装到目录 /usr/local/java中
第四步:下载hadoop安装文件
hadoop安装文件地址:http://mirrors.hust.edu.cn/apache/hadoop/common/
下载到目录下~/hadoop/ 三台主机都需要安装hadoop
一定要在hadoop用户下执行解压指令:tar -zxvf hadoop-2.7.3.tar.gz 将hadoop解压安装到目录~/hadoop
添加hadoop_home环境变量到:/etc/profile里
- # Java Env
- export JAVA_HOME=/usr/local/java/jdk1.8.0_121
- export PATH=$JAVA_HOME/bin:$PATH
- export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
- # Hadoop Env
- export HADOOP_HOME=/home/hadoop/hadoop-2.7.3
- export HADOOP_PREFIX=${HADOOP_HOME}
- export PATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin
- export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
- export HADOOP_HDFS_HOME=${HADOOP_PREFIX}
- export HADOOP_MAPRED_HOME=${HADOOP_PREFIX}
- export HADOOP_YARN_HOME=${HADOOP_PREFIX}
每台机器执行:source /etc/profile 使环境变量生效
每台机器执行:hadoop version 查看hadoop是否安装成功。
第五步:关闭防火墙
- $ sudo apt-get install ufw
- $ sudo ufw disable
- $ sudo ufw status
第六步:需要在hadoop-2.6.0目录下创建一些目录
1. 创建core-site.xml中hadoop.tmp.dir 的目录:hadoop-2.7.3/tmp # 这个目录start-dfs.sh时不会自动创建
2. 创建hdfs-site.xml中dfs.namenode.name.dir的目录:hadoop-2.7.3/dfs/name # 这个目录start-dfs.sh时会自动创建
3. 创建hdfs-site.xml中dfs.datanode.data.dir的目录:hadoop-2.7.3/dfs/data # 这个目录start-dfs.sh时会自动创建
4. 创建hdfs-site.xml中dfs.journalnode.edits.dir的目录:hadoop-2.7.3/dfs/journal # 这个目录start-dfs.sh时会自动创建
5. 创建journalnode的日志文件logs目录:hadoop-2.7.3/logs # 这个目录start-dfs.sh时会自动创建
第七步:修改hadoop配置文件
同理配置其他两台机器
(1) hadoop-env.sh
增加如下两行配置:
- export JAVA_HOME=/usr/local/java/jdk1.8.0_121
(2) core-site.xml
- <configuration>
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://Master:9000</value>
- </property>
- <property>
- <name>hadoop.tmp.dir</name>
- <value>/home/hadoop/hadoop-2.7.3/tmp</value>
- </property>
- </configuration>
(3) hdfs-site.xml
- <configuration>
- <property>
- <name>dfs.replication</name>
- <value>3</value>
- </property>
- </configuration>
数据有三个副本
(4) mapred-site.xml (需要用户新建文件,按照mapred-site.xml.default设置即可)
- <configuration>
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- </property>
- </configuration>
(5) yarn-env.sh
增加 JAVA_HOME 配置
- export JAVA_HOME=/usr/local/java/jdk1.8.0_121
(6) yarn-site.xml
- <configuration>
- <!-- Site specific YARN configuration properties -->
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property>
- <property>
- <name>yarn.resourcemanager.hostname</name>
- <value>Master</value>
- </property>
- </configuration>
(7) slaves
- Slave01
- Slave02
Master(master) 即作为 NameNode 也作为 DataNode。
在 Slave01 和 Slave02 上做同样的配置
- scp /home/hadoop/hadoop-2.7.3/etc/hadoop/* hadoop@10.0.83.202:/home/hadoop/hadoop-2.7.3/etc/hadoop/ #并且在CDH1中修改蓝色部分数据
- scp /home/hadoop/hadoop-2.7.3/etc/hadoop/* hadoop@10.0.83.173:/home/hadoop/hadoop-2.7.3/etc/hadoop/ #并且在CDH2中修改蓝色部分数据
第八步:启动HDFS
第一次启动HDFS集群:
1、执行如下命令:
- $ start-dfs.sh
目的是开启所有节点上的journalnode使得信息可以互联。
2、初始化Master节点上的namenode元数据+开启Master的namenode:
- $ hdfs namenode -format
- $ start-dfs.sh
3、其他Slave01,Slave02等节点上同步Master的初始化namenode元数据信息+开启Slave01,Slave02等节点的namenode:
- $ hdfs namenode -bootstrapStandby
- #在nn1节点上输入指令 $ start-dfs.sh
4、将Master节点standby状态改成active状态:
- $ hdfs haadmin -transitionToActive nn1
5、查看hdfs的状态:
- $ hdfs haadmin -getServiceState nn1
顺序一定不要变。
6、为HDFS创建HDFS数据库中hadoop用户的工作环境:
- $ hdfs dfs -mkdir -p /user/hadoop
非第一次启动HDFS集群:
- $ start-dfs.sh
- $ hdfs haadmin -transitionToActive nn1