hadoop的安装与配置
一:配置Linux免密登录,安装hadoop前要先配置Java 环境变量,点我的主页有详细的配置步骤,这里就不做详细的讲解。
二:下载地址为:链接https://hadoop.apache.org/.
一:
注意:不推荐下载太高版本
①:关闭防火墙–永久关闭
systemctl stop firewalld
systemctl disable firewalld
②:上传Hadoop的压缩包,到Linux下的home路径下,tar -zxvf hadoopx.x.x.tar 解压
③:在hadoop-2.7.3目录下创建四个目录:tmp、hdfs、hdfs/data、hdfs/name tmp:用来存储Hadoop临时文件,hdfs/data目录存储hdfs的文件块,hdfs/name目录用来存储元数据信息
二:配置文件
文件位置:hadoop/etc/hadoop
配置core-site.xml文件
<property>
<name>fs.defaultFS</name>
<value>hdfs://server-1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
# 这里是你创建的tmp路径
<value>file:/usr/local/zhitu/hadoop-2.7.3/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
配置hdfs-site.xml文件
进入hadoop目录下的etc/hadoop目录下,修改hdfs-site.xml文件,该文件主要是hdfs系统的相关配置,在配置中增加如下配置项:
dfs.namenode.name.dir :使用之前我们创建的hdfs/name目录
dfs.datanode.data.dir:使用之前我们创建的hdfs/data目录
dfs.replication: 文件保存的副本数
dfs.namenode.secondary.http-address:http访问hdfs系统的地址(一般使用服务器名称)和端口
dfs.webhdfs.enabled:是否开启web访问hdfs系统。设置为true可以让外部系统使用http协议访问hdfs系统。
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/zhitu/hadoop-2.7.3/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/zhitu/hadoop-2.7.3/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>server-1:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
3.4、配置mapred-site.xml文件
mappred.xml文件中主要配置mapreduce相关的配置。
进入hadoop-2.7.3目录下的etc/hadoop目录下,将文件mapred-site.xml.template使用mv命令重命名为mapred-site.xml,并修改该文件增加如下配置项:
mapreduce.framework.name :运行mapreduce使用的框架,2.0以上的都是用的yarn
mapreduce.jobhistory.address:历史服务器的地址
mapreduce.jobhistory.webapp.address: 历史服务器的web访问地址
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>server-1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>server-1:19888</value>
</property>
配置yarn-site.xml文件
yarn-site.xml文件中主要配置yarn框架相关的配置。
进入hadoop-2.7.3目录下的etc/hadoop目录下,修改yarn-site.xml文件,增加如下配置项:
yarn.nodemanager.aux-services:NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序
yarn.nodemanager.auxservices.mapreduce.shuffle.class:mapreduce执行shuffle使用的class
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框架中运行的任务状态
yarn.nodemanager.resource.memory-mb:NodeManager运行所需要的内存,单位MB。
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>hadoop1:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoop1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hadoop1:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hadoop1:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hadoop1:8088</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>1536</value>
</property>
、配置hadoop-env.sh、yarn-env.sh的JAVA_HOME
进入hadoop-2.7.3目录下的etc/hadoop目录下,修改hadoop-env.sh、yarn-env.sh 两个文件,增加JAVA_HOME的环境变量配置。查看jdk目录可使用命令echo $JAVA_HOME。
在hadoop-env.sh、yarn-env.sh两个文件中分别增加如下一段代码(jdk目录请根据自己实际情况设置):
export JAVA_HOME=/usr/lib/java/jdk1.8
4.配置主服务器免登录访问从服务器
4.1、为每个节点分别产生公、私密钥配置
以下操作我们选取namenode服务器server-1作为示例,成功之后,也在另外两台服务器上执行相同的操作!!!
开始之前我们可以先测试下,用ssh命令登录本机或者其他服务器,无论是本机还是其他主机,都是需要输入密码的。
使用ssh-keygen命令可以为本服务器生成公钥(id_dsa.pub)和私钥(Id_dsa),要求输入passphrased的时候直接敲回车。
ssh-keygen -t dsa -f ~/.ssh/id_dsa
cp ~/.ssh/id_dsa.pub ~/.ssh/authorized_keys
4.2、让主结点能通过SSH免密码登录两个子结点
将主服务器的公钥文件内容添加到从服务器的authorized_keys文件里,就可以实现主服务器免密码登录从服务器了。
以下操作均在主服务器上执行。
使用scp命令,将主服务器的公钥文件id_dsa.pub复制到从服务器上,并命令为server-1.pub(此文件名可以自己随意起)。
scp ~/.ssh/id_dsa.pub root@server-2:~/.ssh/server-1.pub
输入此命令后,会要求输入server-2服务器的root账号密码,输入密码即可。
再将上一步生成的server-1.pub文件内容追加到server-2的authorized_keys文件中,可以登录到server-2上去操作,也可以在server-1上使用ssh命令远程操作。这里我们使用ssh命令,在server-1上远程操作
ssh root@server-2 “cat /.ssh/server-1.pub>>/.ssh/authorized_keys”
输入此命令后,会要求输入server-2服务器的root账号密码,输入密码即可。
如果不出问题,此时server-1服务就可以通过SSH免密码访问server-2了。
将Hadoop复制到各从服务器
通过以上步骤我们基本已经配置好了hadoop的集群配置,现在我们需要将我们配置好的文件复制到其他的服务器上。将文件copy到从服务器上的方法有很多,建议使用scp命令。
参考:在主服务器上执行以下两条命令(其中root为登录从服务器的用户名,server-2,server-3为从服务器的名称,请根据自己实际情况修改):
scp -r /usr/local/zhitu/hadoop root@server-2:/usr/local/zhitu/
格式化namenode
6.1、格式化namenode
在主服务器上,进入hadoop目录下,格式化namenode。
cd /usr/local/zhitu/hadoop
bin/hdfs namenode -format
、启动Hadoop
7.1、启动Hadoop
在主服务器上,进入hadoop目录下,启动Hadoop集群。
sbin/./start-all.sh
8.用jps,检测是否启动成功