一、首先下载好jdk、hadoop包,放入linux并解压
注意:
1、大家尽量选择centos6版本,反正我用的是centos7,出现了很多问题,可能是7增加了一些安全机制,导致在免密登陆那块很容易出现授权列表有公钥也无法登陆问题
2、用普通用户模式进行密钥的分发和集群的开启,如果用root用户模式,可能会出现意想不到的问题,比如:系统只认第一次进行密钥分发的模式(普通用户模式/root用户模式),还出现一个root用户通过修改sshd_config后可以通过ssh登陆其他主机,而普通用户模式,就算密码输入无误也无法登陆,总是提示无权限,我已经进坑,各位注意点
为了日后的使用方便,给自己的集群确定一个主机,多个从主机
主机的命名为master
从主机的命名为salve(1、2、3...)
修改方式:
>>vim /etc/hostname
1.1、为了主机能够控制从主机,我们使用ssh进行免密登录,原理图如下:
接下来开干:
1、通过rsa方式生成密钥
>> ssh-keygen
一路回车,就完成了,此时在.ssh文件目录生成了几个文件
>> cd ~/.ssh
>> ls
会看到如下几个文件:
id_rsa.pub:公共密钥,用于发送给将要登录的主机,进行验证
id_rsa:私密,与公钥成对出现
authorized_keys:授权列表,只有在此列表的公共密钥才能通过公钥免密登录
2、比如现在又A、B两台主机,A想要免密登录B,在A、B两台主机都进行了密钥生成操作后
我先只需要将A的公钥,放到B的授权列表中,首先将A的公钥文件id_rsa_A.pub发送到B主机,比如放到"/home/"
在B主机上执行将A的公钥加入授权列表操作
>> cd ~/.ssh
>>cat /home/id_rsa_A_pub >> authorized_keys
现在看看文件,会发现授权列表里已经加入了A的公钥
二、文件的配置
2.1.系统变量文件的配置,添加jdk和hadoop的安装路径
>>vim /etc/profile
在文件中输入如下内容:
export JAVA_HOME=/home/zhangdabai/jdk1.8.0_201
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export HADOOP_HOME=/home/zhangdabai/hadoop/hadoop-2.7.3
export PATH="$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH"
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
2.2.hadoop文件的配置(6步):
准备工作:进入hadoop-2.7.3文件夹目录下,创建一个hdfs文件夹,并在其下创建
name、tmp、data子文件夹
接下来全部的文件配置需进入hadoop-2.7.3/etc/hadoop/文件夹下进行
1、配置hadoop的环境变量,告诉hadoop,它所依赖的jdk的安装路径
>>vim hadoop-env.sh
添加如下内容:
# The java implementation to use.
export JAVA_HOME=/home/zhangdabai/jdk1.8.0_201
2、配置核心xml文件
>>vim core-site.xml
在configuration标签下添加如下内容:
<configuration>
<!--1、指定临时文件的存储路径-->
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/zhangdabai/hadoop/hadoop-2.7.3/hdfs/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<!--2、指定文件缓冲区大小-->
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<!--3、指定文件系统文hdfs和namenode的地址及端口,其中master为主机名-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
3、为了防止文件系统意外,需要配置文件副本的存储,保证文件保存的健壮性
>>vim hdfs-size.xml
配置如下内容:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/zhangdabai/hadoop/hadoop-2.7.3/hdfs/name
</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/zhangdabai/hadoop/hadoop-2.7.3/hdfs/data
</value>
<final>true</final>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
4、指定程序运行在yarn集群上
>>mv mapred-site.xml.template mapred-size.xml
>>vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
5、配置yarn
>>vim yarn-site.xml
输入如下内容:
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- 指定资源的管理者(ResourceManger),master为管理主机名 -->
<property>
<name>yarn.resourcemanager.address</name>
<value>master:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<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>
</configuration>
6、指定从主机名
>>vim slaves
slave1
slave2
...
2.3、将主机上配置好了的hadoop发送到各个从主机上,并按2.1方式配置好环境变量
>>ssh-copy-id “主机ip”
...
hadoop1是linux在虚拟机中的名字,slave1是linux主机名
3、格式化
>>hdfs namenode -format
4、启动集群
>>start-all.sh
5、jps测试
会出现6个进程,分别为:datanode、namenode、nodemanager、resourcemanager、secondarynamenode、jps
缺一不可!
如果出现如下问题,解决方案:
出现问题首先看日志文件(有些情况不会生成日志文件)
1、出现datanode未启动
解决方法:考虑到是多次格式化原因,造成id不一致,所以将data文件、tmp文件夹下面的文件删除,重新格式化,重启
2、nodemanager未启动,或者启动后马上消失进程
解决方法:hadoop配置文件错了,重新去配过就好
本文章只做学习记录,不喜勿喷。
如果大家还是有问题,给大家一个文档,照做应该可以
链接:https://pan.baidu.com/s/1V82T5JFltGngxWaXXUebDw
提取码:pqho