1 环境准备
centos7
安装包: jdk1.7.0_45.tgz, hadoop-2.6.1.tar.gz
三台机器的IP:
master: 192.168.37.100
slave1: 192.168.37.101
slave2: 192.168.37.102
2 关闭防火墙
检查防火墙状态: systemctl status firewalld.service
关闭防火墙: systemctl stop firewalld.service
关闭防火墙开机自启: systemctl disable firewalld.service
再次检查防火墙状态: systemctl status firewalld.service
可以看到防火墙已关闭
3 配置多台机器互信
在每个节点上执行,生成公钥:
ssh-keygen -t rsa
一直enter键就行
将公钥写入认证文件中,并给生成认证文件添加权限:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chomd 777 ~/.ssh/authorized_keys
然后在master上执行,即在192.168.37.100执行,需要输入密码:
ssh 192.168.37.101 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh 192.168.37.102 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
将认证文件分发至每一个节点:
scp ~/.ssh/authorized_keys 192.168.37.101:~/.ssh/
scp ~/.ssh/authorized_keys 192.168.37.102:~/.ssh/
就可以ssh登录了
还可以配置: vim /etc/hosts
将ip 和 对应的hostname加入进去,连接时,就可以直接ssh hostname 连接了,不用再输入ip,
192.168.37.100 master
192.168.37.101 slave1
192.168.37.102 slave2
如连接slave1 : ssh slave1
4 安装jdk(这里安装的时jdk1.7)
每个节点都要安装jdk
解压jdk:
tar zxvf jdk1.7.0_45.tgz
配置jdk环境变量:
vim ~/.bashrc
JAVA_HOME 为Jdk压缩包解压的目录位置的绝对路径
JAVA_HOME=/usr/local/jdk1.7.0_45
export PATH="$JAVA_HOME/bin:$PATH"
然后执行:
bash
查看java是否生效:
java -version
5 安装Hadoop2
解压:
tar zxvf hadoop-2.6.1.tar.g
进入加压目录: 我这里解压在 /usr/local下
cd /usr/local/hadoop-2.6.1/etc/hadoop
需要修改下面一些文件
1 修改 hadoop-env.sh
修改java_home即你解压jdk的目录
export JAVA_HOME=/usr/local/jdk1.7.0_45
2 修改 yarn-env.sh
同样:将注释的java_home,修改路径
#export JAVA_HOME=/home/y/libexec/jdk1.6.0/
export JAVA_HOME=/usr/local/src/jdk1.7.0_45
3 修改 slaves
将从节点hostname写入文件中,我这里从节点名字 slave1 slave2
slave1
slave2
4 修改 core-site.xml
注意: tmp 文件夹需要自己手动创建
# 配置hdfs的默认路径和文件的临时存储路径
<configuration
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000/</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/src/hadoop-2.6.1/tmp</value>
</property>
</configuration>
5 修改 hdfs-site.xml
注意:同样需手动创建目录dfs,然后再dfs下在创建两个文件夹:data name
# 配置从节点,数据存储的路径dfs
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/src/hadoop-2.6.1/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/src/hadoop-2.6.1/dfs/data</value>
</property>
</configuration>
6 修改 mapred-site.xml
cp mapred-site.xml.template mapred-site.xm
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
7 修改 yarn-site.xml
<configuration>
<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.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<!--log-->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds</name>
<value>3600</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/tmp/logs</value>
</property>
</configuration>
8 将hadopp加入环境变量:
vim ~/.bashrc
HADOOP_HOME=/usr/local/src/hadoop-2.6.1
export PATH="$HADOOP_HOME/bin:$PATH"
然后执行: bash
9 格式化HDFS文件系统:
hdfs namenode -format
成功在这里有标记
10 在hadoop的目录下的/sbin目录下执行
./start-all.sh