Hadoop 集群搭建及部分详解

环境搭建准备:(所有操作都是在root下)

  主机两台,我没有采用虚拟机,建议使用最小化安装

1.jdk(每个节点都要配置)

  去Java官网下后缀名为.tar.gz的包

  

  使用FTP工具,或者rz命令进行上传

  我放在了/opt/Software/Java 下

  使用 tar -zxvf解压 最小化安装若没提示找不到这个命令 百度安装这个工具

  编辑/etc/profile (也可以不在root 下,我只是测试用,防止之后权限出现问题)

  在后边加上

  

export JAVA_HOME=/opt/SoftWare/Java/jdk1.8.0_152
export JRE_HOME=/opt/SoftWare/Java/jdk1.8.0_152/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

  保存

  检验:输入 source /etc/profile 

  回车后 输入: java -version

  看是否打印Java版本信息,如果提示命令未找到,检查以上步骤

2.Hadoop下载

  我分享的是2.7.5,别的版本可以去官网找

  链接:https://pan.baidu.com/s/1GEZIiNP1kJPjHVucSa8Oow  密码:7k01  

  上传到虚拟机 在Software 下 创建Hadoop目录

  解压

  

准备工作到此结束

集群搭建:

计划:

主机名                       ip                    进程

master              10.32.6.150           namenode resourcemanager

slave       10.32.6.227      datanode  secondarynamenode

首先添加hosts 识别

注释掉开头两行 加上 #   后边写入 ip 和主机名

关闭防火墙

systemctl stop firewalld.service

关闭开机启动

systemctl disable firewalld.service

免秘钥

其实这里配置免秘钥是为了namenode 和 resourcemanager  与各个节点通信,所以只需要  这两个节点对自己和对其他节点的免秘钥,但是如果不对每台机器都进行对自己以及对其他机器的公钥分发,在从节点启动或是终止集群就会提示输入密码,我这里是两台机器看不出来区别,关于这点为什么更详细的解答,可以谷歌或者查看Hadoop源代码 

2.7.5源代码 链接如下:链接:https://pan.baidu.com/s/1YWt2rcyiHncI5BMN0G7p7g  密码:4p5z

在每台机器都输入:

首先 cd ~/.ssh

ssh-keygen -t rsa -P '' 这点 就 ssh-keygen 也是可以的   关于ssh-keygen参考:http://killer-jok.iteye.com/blog/1853451

然后一路回车就行了

然后查看在.ssh文件夹下 是否有了这两个文件

然后 在每台机器输入

cp id_rsa.pub authorized_keys

最后将所有机器上的authorized_keys文件进行合并

在所有的从节点上都执行:cat ~/.ssh/authorized_keys | ssh root@master 'cat >> ~/.ssh/authorized_keys'

然后将master节点上的authorized_keys 分发到其他slave节点

scp ~/.ssh/authorized_keys root@slave1:~/.ssh/

然后测试 

 ssh slave1 

显示这个则 完成,否则删除.ssh下所有文件从 ssh-keygen开始

安装Hadoop:(每个节点都要配置)

在/opt/Software/Hadoop下解压

修改环境变量

加入

export HADOOP_HOME=/opt/SoftWare/Hadoop/hadoop-2.7.5
export HADOOP_LOG_DIR=$HADOOP_HOME/logs
export YARN_LOG_DIR=$HADOOP_LOG_DIR
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

保存

重新加载  source /etc/profile

修改Hadoop配置文件:

配置 /etc/hadoop/hadoop-env.sh  

加入

export JAVA_HOME=/opt/SoftWare/Java/jdk1.8.0_152

配置/etc/hadoop/yarn-env.sh

同样加入

export JAVA_HOME=/opt/SoftWare/Java/jdk1.8.0_152

修改slaves文件

把从节点名称加进去

配置 core-site.xml

<!--在<configuration></configuration>中间添加一下内容-->
  <property>
    <name>fs.defaultFS</name><!--定义Hadoop Master的URI和端口-->
    <value>hdfs://master:9000</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name><!--hadoop的临时存储目录-->
    <value>file:/opt/SoftWare/Hadoop/hadoop-2.7.5/tmp</value>
  </property>
  <property>
    <name>io.file.buffer.size</name><!--用作序列化文件处理时读写buffer的大小-->
    <value>131702</value>
  </property>
  <property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
  </property>
  <property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
  </property>

配置hdfs-site.xml

  <property><!--namenode节点数据存储目录-->
    <name>dfs.namenode.name.dir</name>
    <value>file:/opt/SoftWare/Hadoop/hadoop-2.7.5/hdfs/name</value>
  </property>
  <property><!--datanode数据存储目录-->
    <name>dfs.datanode.data.dir</name>
    <value>file:/opt/SoftWare/Hadoop/hadoop-2.7.5/hdfs/data</value>
  </property>
  <property><!--指定DataNode存储block的副本数量,不大于DataNode的个数就行,默认为3-->
    <name>dfs.replication</name>
    <value>1</value>
  </property>
  <property><!--指定secondarynamenode的http协议访问地址-->
    <name>dfs.namenode.secondary.http-address</name>
    <value>slave1:50090</value>
  </property>
  <property><!--指定master的https协议访问地址-->
    <name>dfs.namenode.secondary.https-address</name>
    <value>10.32.6.150:50091</value>
  </property>
  <property><!--必须设置为true,否则就不能通过web访问hdfs上的文件信息-->
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
  </property>
  <property>
    <name>dfs.permissions</name>
    <value>false</value>
  </property>

配置 yarn-site.xml

<!-- Site specific YARN configuration properties -->
  <property><!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle才能运行MapReduce程序-->
    <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><!-- 对客户端暴露的地址。客户端通过该地址想ResourceManager提交应用程序,或是杀死应用程序等-->
    <name>yarn.resourcemanager.address</name>
    <value>master:8032</value>
  </property>
  <property><!-- 对ApplicationMaster暴露的访问地址,ApplicationMaster通过该地址向ResourceManager申请资源或是释放资源 -->
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>master:8030</value>
  </property>
  <property><!-- ResourceManager对NodeManager暴露的地址,NodeManager通过该地址向ResourceManager汇报心跳,领取任务等-->
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>master:8031</value>
  </property>
  <property><!-- ResourceManager 对管理员暴露的访问地址,管理员通过该地址向RM发送管理命令-->
    <name>yarn.resourcemanager.admin.address</name>
    <value>master:8033</value>
  </property>
  <property><!-- 用户可通过该地址在浏览器中查看集群各类信息 -->
    <name>yarn.resourcemanager.webapp.address</name>
    <value>master:8088</value>
  </property>
  <property><!-- NodeManager 总的可用的物理内存。注意,该参数是不可修改的,一旦设置,整个运行过程不可动态修改。不过Apache已经在尝试将该参数做成可动态修改的-->
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>2048</value>
  </property>

修改  mapred-site.xml

这个文件是不存在的 可以用 cp mapred-site.xml.template mapred-site.xml  该命令创建一个

然后添加:

  <property><!--使用yarn运行mapreduce程序-->
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  <property><!--MapReduce JobHistory Server地址-->
    <name>mapreduce.jobhistory.address</name>
    <value>master:10020</value>
  </property>
  <property><!--MapReduce JobHistory Server Web界面地址-->
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>master:19888</value>
  </property>

到此 Hadoop配置文件全部结束,讲master上的Hadoop文件夹发送到各个节点对应位置

 修改系统时间

格式化Hadoop 

 hdfs namenode -format

status 为0 表示成功 error 的话 上翻找错误

然后在 master  start-all.sh 启动集群 

完成后在各个节点检查

输入 jps  

master :

slave1:

注:如果出现问题最好把 /hdfs/name    /hdfs/data   /tmp  /log 下全部清空 并注意是所有节点的

如有问题,请指出

猜你喜欢

转载自www.cnblogs.com/geek-sq/p/9225216.html
今日推荐