目录
1.安装环境
2.安装前准备
3.安装配置Hadoop
4.初始化及运行
1.安装环境
本博客所安装的hadoop只有HDFS、YARN以及MapReduce组件,不包含Hadoop其他组件的安装。
1)准备4台虚拟机(CentOS 7),ip与主机名如下:
- 192.168.134.128 master
- 192.168.134.129 slave1
- 192.168.134.130 slave2
- 192.168.134.131 slave3
主机规划: 192.168.134.128做master,运行NameNode和ResourceManager进程。其他三台主机做slave,运行DataNode和NodeManager进程。
2)Java版本:jdk1.8.0_141
3)Hadoop版本:hadoop-2.9.2
2.安装前准备
第1、2步使用root用户执行,3、4步使用grid用户执行。
1)分别在4台机器上建立grid用户
#新建用户grid,主目录为/home/grid,如果该目录不存在则创建
useradd -d /home/grid
#将grid用户添加到root组
usermod -a -G root grid
2)分别在四台机器上的/etc/hosts/文件中添加如下内容,用做域名解析
192.168.134.128 master
192.168.134.129 slave1
192.168.134.130 slave2
192.168.134.131 slave3
3)分别在4台机器上安装java
tar -zxvf [java压缩包目录] -C [解压到的目标路径]
4)配置ssh免密登陆
这里配置任意两台机器之间都可以免密登陆
①分别在4台机器上生成密钥对,注意这里需要在4台机器上都执行。
#进入grid用户的主目录
cd ~
#生成密钥对
ssh-keygen -t rsa
然后一路按回车键。
②在master上执行
#进入.ssh
cd ~/.ssh/
#把本机的公钥追加到自身的~/.ssh/authorized_keys文件里
ssh-copy-id master
#将authorized_keys文件复制到slave1主机
scp /home/grid/.ssh/authorized_keys slave1:/home/grid/.ssh/
③在slave1上执行
cd ~/.ssh/
ssh-copy-id slave1
scp /home/grid/.ssh/authorized_keys slave2:/home/grid/.ssh/
④在slave2上执行
cd ~/.ssh/
ssh-copy-id slave2
scp /home/grid/.ssh/authorized_keys slave3:/home/grid/.ssh/
⑤在slave3上执行
cd ~/.ssh/
ssh-copy-id slave3
#此时authorized_keys文件中已经包含所有4台主机的公钥,将它复制到其他3台主机
scp /home/grid/.ssh/authorized_keys master:/home/grid/.ssh/
scp /home/grid/.ssh/authorized_keys slave1:/home/grid/.ssh/
scp /home/grid/.ssh/authorized_keys slave2:/home/grid/.ssh/
到这里ssh的免密登陆就配置完成了。
3.安装配置Hadoop
以下操作均使用grid用户在master主机上执行
1)安装hadoop
cd ~
tar -zxvf ~/upload/hadoop-2.9.2.tar.gz -C ~/
2)建立目录
cd ~/hadoop-2.9.2
mkdir tmp
mkdir hdfs
mkdir hdfs/name
mkdir hdfs/data
3)修改配置文件
①编辑~/home/grid/hadoop-2.9.2/etc/hadoop/core-site.xml文件,添加如下内容:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:///home/grid/hadoop-2.9.2/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
</configuration>
说明:core-site.xml是Hadoop的全局配置文件,这里配置了三个参数
- fs.defaultFS:默认文件系统的名称,URI形式,默认是本地文件系统,这里配置了使用HDFS文件系统,namenode在master上
- hadoop.tmp.dir:Hadoop的临时目录,其他目录会基于此路径,是本地目录。
- io.file.buffer.size:在读写文件时使用的缓存大小。这个大小应该是内存Page的倍数。
②编辑~/home/grid/hadoop-2.9.2/etc/hadoop/hdfs-site.xml文件,添加如下内容:
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///home/grid/hadoop-2.9.2/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///home/grid/hadoop-2.9.2/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.namenode.servicerpc-address</name>
<value>master:10000</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
说明:hdfs-site.xml是HDFS的配置文件,这里配置了6个参数。
- dfs.namenode.name.dir:本地磁盘目录,用于NameNode存储FSImage文件。
- dfs.datanode.data.dir:本地磁盘目录,HDFS存储数据块的地方。
- dfs.replication:数据块副本数。
- dfs.namenode.secondary.http-address:SecondaryNameNode的HTTP服务地址。
- dfs.namenode.servicerpc-address:HDFS服务通信的RPC地址。如果设置该值,备份节点、数据节点和其他服务将会连接到指定地址。
- dfs.webhdfs.enabled:指定是否在NameNode和DataNode上开启WebHDFS功能。
③ 编辑~/home/grid/hadoop-2.9.2/etc/hadoop/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:8031</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>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>1024</value>
</property>
</configuration>
说明:yarn-site.xml是YARN的配置文件,这里配置了8个参数。
- yarn.nodemanager.aux-services:NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可以运行MapReduce程序。
- yarn.nodemanager.aux-services.mapreduce_shuffle.class:对应参考yarn.nodemanager.aux-services。
- yarn.resourcemanager.address:ResourceManager对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等。
- yarn.resourcemanager.scheduler.address:调度器地址,是ResourceManager对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源,释放资源等。
- yarn.resourcemanager.resource-tracker.address:ResourceManager对NodeManager暴露的地址。NodeManager通过该地址向RM汇报心跳,领取任务等。
- yarn.resourcemanager.admin.address:ResourceManager对管理员暴露的访问地址,管理员通过该地址向RM发送管理命令等。
- yarn.resourcemanager.webapp.address:ResourceManager对外Web UI地址,用户可以通过该地址在浏览器中查看集群各类信息。
- yarn.nodemanager.resource.memory-mb:NodeManager总的可用物理内存,不能小于1024,注意,该参数一旦设置,整个运行过程中不可以动态修改。
④ 编辑~/home/grid/hadoop-2.9.2/etc/hadoop/mapred-site.xml文件,添加如下内容:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
说明:mapred-site.xml是MapReduce的配置文件,这里配置了三个参数:
- mapreduce.framework.name:设置MapReduce的执行框架为yarn
- mapreduce.jobhistory.address:MapReduce的历史服务器的位置
- mapreduce.jobhistory.webapp.address:MapReduce历史服务器Web UI地址
⑤ 编辑~/home/grid/hadoop-2.9.2/etc/hadoop/slaves文件,添加如下内容:
192.168.134.129
192.168.134.130
192.168.134.131
说明:配置Hadoop集群中的所有slave
⑥编辑~/home/grid/hadoop-2.9.2/etc/hadoop/hadoop-env.sh文件,添加如下内容:
export JAVA_HOME=/home/grid/jdk1.8.0_141
⑦编辑~/home/grid/hadoop-2.9.2/etc/hadoop/yarn-env.sh文件,添加如下内容:
export JAVA_HOME=/home/grid/jdk1.8.0_141
4)将hadoop主目录复制到各个从服务器上
scp -r ~/hadoop-2.9.2 slave1:/home/grid/
scp -r ~/hadoop-2.9.2 slave2:/home/grid/
scp -r ~/hadoop-2.9.2 slave3:/home/grid/
该操作的目的主要是使刚才在master主机上修改的配置文件在其他主机上生效。
5)配置环境变量
使用root用户分别在4台机器上的/etc/profile文件中添加如下环境变量:
#java
export JAVA_HOME=/home/grid/jdk1.8.0_141
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#hadoop
export HADOOP_HOME=/home/grid/hadoop-2.9.2
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使环境变量生效:
source /etc/profile
4.初始化及运行
以下的操作均使用grid用户在master主机上执行
#格式化HDFS,注意这里只能格式化一次,不能多次格式化
hdfs namenode -format
#启动HDFS
start-dfs.sh
#启动yarn
start-yarn.sh
执行成功后,使用jps命令查看master节点上的java进程,可以看到主节点上启动了NameNode、SecondaryNameNode、ResourceManager进程,如下所示:
在slave节点上执行jps命令可以查看slave节点上的进程,可以看到slave节点上启动了DataNode、NodeManager进程,如下所示:
你还可以通过master节点的web接口来查看集群状态,输入网址:http://192.168.134.128:50070,可以看到如下:
到这里,就大功告成啦啦啦啦!!!撒花!!!