hadoop集群的安装配置
简介
Apache™Hadoop®项目是一个可靠的,可扩展的分布式计算的开源软件。
Apache Hadoop软件库是一个框架,允许使用简单的编程模型跨计算机群集分布式处理大型数据集。 它旨在从单台服务器扩展到数千台机器,每台机器提供本地计算和存储。 该库本身不是依靠硬件来提供高可用性,而是设计用于在应用层检测和处理故障,从而在一组计算机之上提供高可用性服务,每个计算机都可能出现故障。
该项目包括这些模块:
- Hadoop Common:支持其他Hadoop模块的常用实用程序
- Hadoop Distributed File System (HDFS™):提供对应用程序数据的高吞吐量访问的分布式文件系统。
- Hadoop YARN:作业调度和集群资源管理的框架。
- Hadoop MapReduce:一个用于并行处理大型数据集的基于YARN的系统。
安装配置
1. 安装jdk
集群中的每台服务器都需要安装jdk,步骤如下:
cd /opt
wget http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz
tar -zxvf jdk-8u151-linux-x64.tar.gz
sudo vim /etc/profile
接下来,在文件最后面添加jdk路径,并保存退出:
#java
export JAVA_HOME=/opt/jdk1.8.0_144
export JRE_HOME=/opt/jdk1.8.0_144/jre
export CLASSPATH=$JAVA_HOME/lib
export PATH=:$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
最后是文件生效,执行命令:
source /etc/profile
查看版本,命令:
java -version
2. 修改主机名及ip映射
集群中的每台服务器都需要配置,步骤如下:
vim /etc/hosts
打开文件后,添加或修改相应的映射(ip 主机名),例如如下:
10.24.106.80 spark.datanode1
10.24.106.81 spark.datanode2
10.24.106.82 spark.namenode
vim /etc/hostname
打开文件后,修改主机名,和/etc/hosts文件中相同。
最后需要重启使其生效
3. 创建用户
集群中的每台服务器都需要创建,步骤如下:
命令如下:
useradd hadoop #创建用户名为hadoop的用户
passwd hadoop #为hadoop用户设置密码
接下来,为hadoop用户赋予root权限,命令:
vim /etc/sudoers
在该文件中加入下面一行内容,并保存退出(修改文件内容需要更改文件的权限,保存退出之后,需要把权限再次更改回去):
hadoop ALL=(ALL:ALL) ALL
最后使用hadoop用户登录系统
4. 主机之间通过ssh无密钥登录
集群中的每台服务器都需要配置,步骤如下:
cd /home
下边命令用于生成公钥(id_rsa.pub)和私钥(id_rsa),并键入下面命令后一直回车就可以了,密钥在/home/.ssh目录下。
ssh-keygen -t rsa -P ''
cd .ssh
接下来把所有服务器生成的公钥全部追加进authorized_keys文件中,意思就是这个文件中有集群中所有服务器的公钥,该文件在.ssh目录下,如没有该文件可以自己创建一个。
最后把拥有集群中所有服务器的公钥的这个文件通过scp命令远程复制到每台服务器中,相当于每台服务器的authorized_keys文件中内容相同。
现在可以通过ssh免密码来远程登录其他服务器了(第一次需要,后面在登陆就不需要了),例如:
ssh 10.24.106.80
5. 安装hadoop
cd /opt
wget http://mirror.stjschools.org/public/apache/hadoop/common/hadoop-2.7.4/hadoop-2.7.4-src.tar.gz
tar -zxvf hadoop-2.7.4-src.tar.gz
添加环境变量:
vim /etc/profile
在文件中追加下面内容,并保存退出后,在使其文件生效。
#hadoop
export PATH=${HADOOP_HOME}/bin:$PATH
export HADOOP_HOME=/opt/hadoop-2.7.4/
现在创建数据存放目录:
可以先通过命令df -h 查看一下那个磁盘下空间比较多,就把数据放在相应的目录下,例如:
cd /home
mkdir -p hadoop/dfs/data
mkdir -p hadoop/dfs/name
mkdir -p hadoop/tmp
上面目录用于存放数据需要大一点的空间。
cd hadoop-2.7.4
接下来进入配置目录,进行相应的配置:
cd etc/hadoop
1. 编辑hadoop-env.sh文件
找到 JAVA_HOME 改为 JDK 的安装目录,例如如下:
export JAVA_HOME=/opt/jdk1.8.0_144
2. 编辑slaves文件添加从服务器的主机名
例如如下(下面两台服务器为slaves):
spark.datanode1
spark.datanode2
3. 编辑core-site.xml文件
vim core-site.xml
添加如下内容:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://spark.namenode:9002</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
</configuration>
最后保存退出
配置解释:
第一个value值是<value>hdfs://你的主服务器的主机名:端口(默认为9000,若该端口被占可以更换其他的)</value>
第二个value值是<value>序列文件中使用的读/写缓冲区的大小(一般为131072)</value>
第三个value值是<value>file:/hadoop的临时目录(上面已经提前创建了)</value>
4. 编辑hdfs-site.xml文件
vim hdfs-site.xml
添加如下内容:
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>spark.namenode:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
5. 编辑mapred-site.xml
首先复制mapred-site.xml.template文件,并命名为mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
添加以下内容:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>spark.namenode:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>spark.namenode:19888</value>
</property>
</configuration>
6. 编辑yarn-site.xml文件
vim 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>spark.namenode:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>spark.namenode:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>spark.namenode:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>spark.namenode:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>spark.namenode:8088</value>
</property>
</configuration>
所有配置已经完成。
接下来,该hadoop-2.7.4文件夹分发给集群中的各个服务器,使用scp远程复制命令,例如:
scp -r hadoop-2.7.4 hadoop@spark.datanode1:/opt
scp -r hadoop-2.7.4 hadoop@spark.datanode2:/opt
首次启动HDFS时,必须格式化。 将一个新的分布式文件系统格式化为hdfs,在master上执行如下命令:
cd hadoop-2.7.4
./bin/hadoop namenode -format
启动hadoop
./sbin/start-all.sh
查看进程服务,命令如下:
jps
在master上可以看到
namenode
secondarynamenode
resourcemanager
在slaves上看到:
datanode
nodemanager
查看端口占用情况,命令如下:
netstat -tupln
最后访问web-ui页面
namenode页面
http://10.24.106.82:50070
resourcemanager页面
http://10.24.106.82:8088
END
网友评论