CentOS7下完全分布式Hadoop2.8.5极速搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/QQB67G8COM/article/details/90375949

1. 安装最小化的系统,也就是什么多余的组件都没有,全部需要手动DIY,这样可以最大化保证系统的安全性,CentOS7中早就废弃了ifconfig这一命令来查询网络地址状态,我们可以通过ip addr命令来查询。
2. ip addr查询网络地址状态后发现有两个值,第一个明显是本机服务的inet,第二个并没有inet这个属性值。下一步就是配置网卡,我的为ens33
在这里插入图片描述
3. 将onboot的no值改为yes。J向下移动,L向右移动,A进入插入模式,ESC退出模式,然后输入命令“:wq”回车写入并退出当前文件回到命令行。
在这里插入图片描述
4. 重启服务并重新查看IP地址,发现有IP了。
在这里插入图片描述
5. 分别在剩余的两台CentOS7服务器上执行同样的操作,并更改主机名,命令“vi /etc/hostname”,主机名分别修改为master、slave1、slave2.

6. 在三个节点上分别创建Hadoop平台的管理员用户“hadoop”
创建管理员:adduser hadoop
设置密码:passwd hadoop
查看系统中存在的用户:cat /etc/passwd
设置新用户权限,让新用户能够使用“sudo”命令,sudo默认只允许执行。
更改root用户对sudoers文件的操作权限:chmod -v u+w /etc/sudoers
添加hadoop ALL=(ALL) ALL,如果最后一个ALL更改为NOPASSWD:ALL,即在使用sudo命令的时候不用输入密码,这样极为不安全。
在这里插入图片描述
撤回对sudoers的权限:chmod -v u-w /etc/sudoers
7. 同时安装Java环境和Hadoop环境
解压:tar -zxvf jdk-8u191-linux-x64.tar.gz -C /usr/java
解压:tar -zxvf hadoop-2.8.5.tar.gz -C /hadoopeco
配置环境变量:root下:/etc/profile,user级:~/.bashrc,两个环境变量都配置一下,配置完记得source一下文件,如下:
export JAVA_HOME=/usr/java/jdk1.8.0_191
export JRE_HOME= J A V A H O M E / j r e e x p o r t C L A S S P A T H = . : {JAVA_HOME}/jre export CLASSPATH=.: {JAVA_HOME}/lib: J R E H O M E / l i b e x p o r t H A D O O P H O M E = / h a d o o p e c o / h a d o o p 2.8.5 e x p o r t P A T H = {JRE_HOME}/lib export HADOOP_HOME=/hadoopeco/hadoop-2.8.5 export PATH= {HADOOP_HOME/bin}: H A D O O P H O M E / s b i n : {HADOOP_HOME}/sbin: {JAVA_HOME}/bin:$PATH
验证Java环境和Hadoop环境,hadoop需要依赖Java环境,务必先验证Java环境:
java -version、javac -version、hadoop version,hadoop的版本查看命令没有“-”。

8. 在master节点中的/etc/hosts文件中配置映射,根据每台服务器的IP添加如下:
172.16.137.123 master
172.16.137.126 slave1
172.16.137.127 slave2

9. 配置master节点与slave节点之间无密通讯,不用配置slave之间的无密通讯(以下全部在管理员用户hadoop和root用户下各自操作一遍,保证两个用户都能对slave节点进行无密通讯)。
在三台节点中生成RSA密钥和公钥:ssh-keygen -t rsa
在master节点上进行汇总(务必手敲,复制过去可能会格式错误而抛出没找到相关命令的异常):
ssh master cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh master cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh master cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
保护文件安全,更改文件权限,保证分发到slave中的文件不能被随意更改。
chmod 755 ~/.ssh #所有者读取和写入
chmod 600 ~/.ssh/authorized_keys #所有者完全权限,其它读取和执行
将包含了所有互信机器认证key的认证文件分发到每台slave中:
scp -r ~/.ssh/authorized_keys slave1:~/.ssh/
scp -r ~/.ssh/authorized_keys slave2:~/.ssh/
Root用户下时:
scp -r ~/.ssh/authorized_keys root@slave1:~/.ssh/
scp -r ~/.ssh/authorized_keys root@slave2:~/.ssh/
节点无密互通验证:
在这里插入图片描述
10. 复制重复的文件到slave节点中
在root用户中操作:
复制hosts文件:
在这里插入图片描述
复制root下的/etc/profile和hadoop用户下的~/.bashrc
在这里插入图片描述
11. Master的Java-1.8安装包和hadoop-2.8安装包copy到slave节点并解压

scp -r /hadoopeco/jdk-8u191-linux-x64.tar.gz  root@slave1:/hadoopeco
scp -r /hadoopeco/jdk-8u191-linux-x64.tar.gz  root@slave2:/hadoopeco
scp -r hadoop-2.8.5.tar.gz  root@slave1:/hadoopeco
scp -r hadoop-2.8.5.tar.gz  root@slave2:/hadoopeco
ssh slave1 tar -zxvf /hadoopeco/jdk-8u191-linux-x64.tar.gz -C /usr/java
ssh slave2 tar -zxvf /hadoopeco/jdk-8u191-linux-x64.tar.gz -C /usr/java
ssh slave1 tar -zxvf /hadoopeco/hadoop-2.8.5.tar.gz -C /hadoopeco
ssh slave2 tar -zxvf /hadoopeco/hadoop-2.8.5.tar.gz -C /hadoopeco
验证:
ssh slave1 java -version
ssh slave2 java -version
ssh slave1 hadoop version
ssh slave2 hadoop version

12. 修改hadoopeco的所属和创建一个资源文件保存hadoop的数据

ssh master chown -vR hadoop /hadoopeco
ssh slave1 chown -vR hadoop /hadoopeco
ssh slave2 chown -vR hadoop /hadoopeco
ssh master mkdir /hadoopeco/hresource
ssh slave1 mkdir /hadoopeco/hresource
ssh slave2 mkdir /hadoopeco/hresource

13. 配置核心配置
core-site.xml:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
    	<value>131072</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:///hadoopeco/hresource/tmp</value>
        <description>其他临时目录的基础文件</description>
    </property>
</configuration>

hadoop-env.sh

export JAVA_HOME=/usr/java/jdk1.8.0_191				#配置Java路径
export HADOOP_LOG_DIR=/hadoopeco/hresource/logs	#配置日志路径
#开启并行GC
export HADOOP_NAMENODE_OPTS="-XX:+UseParallelGC ${HADOOP_NAMENODE_OPTS}"

hdfs-site.xml:

<configuration>
	<property>
    	<name>dfs.namenode.secondary.http-address</name>
        <value>master:9001</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///hadoopeco/hresource/dfs/name</value>
    </property>
    <property>
    	<name>dfs.blocksize</name>
    	<value>268435456</value>
    	<description>用于大型文件系统的HDFS块大小默认为256MB</description>
    </property>
    <property>
    	<name>dfs.namenode.handler.count</name>
    	<value>100</value>
    	<description>更多的NameNode服务器线程处理大量来自DataNode的RPC</description>
    </property>

    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///hadoopeco/hresource/dfs/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
</configuration>

<!--
#NameNode配置
<property>
	<name>dfs.hosts</name>
	<value>/hadoopeco/hadoop-2.8.5/etc/hadoop/datanode-allow-list</value>
	<description>允许加入NameNode的datanode列表,默认为空全部都加入</description>	
</property>
<property>
	<name>dfs.hosts.exclude</name>
	<value>/hadoopeco/hadoop-2.8.5/etc/hadoop/datanode-deny-list</value>
	<description>不允许加入NameNode的dataNode列表</description>	
</property>
-->

yarn-site.xml

<configuration>
	<property>
		<name>yarn.log-aggregation-enable</name>
		<value>true</value>
		<description>默认false,进行日志聚合,集中化处理</description>
	</property>
	<property>
		<name>yarn.log-aggregation.retain-seconds</name>
		<value>2592000</value>
		<description>收集的日志的保留时间,以秒为单位,到时后被删除,保留30天后删除</description>
	</property>
	<property>
		<name>yarn.log.server.url</name>
		<value>http://master:19888/jobhistory/logs</value>
		<description>log server的地址</description>
	</property>

	<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.local-dirs</name>    
  		<value>/hadoopeco/hresource/yarn/local</value>
  		<description>存放application执行本地文件的根目录,执行完毕后删除,按用户名存储</description>
	</property>
	<property>
		<name>yarn.nodemanager.log-dirs</name>    
  		<value>/hadoopeco/hresource/yarn/log</value>
  		<description>存放application本地执行日志的根目录,执行完毕后删除,按用户名存储</description>
	</property>
	<property>
		<name>yarn.nodemanager.log.retain-second</name>    
  		<value>604800</value>
  		<description>日志的保留时间,log aggregation没有enable时,有效</description>
	</property>
	<property>
		<name>yarn.nodemanager.remote-app-log-dir</name>    
  		<value>/tmp/logs</value>
  		<description>聚合日志后在hdfs的存放地址</description>
	</property>
	<property>
		<name>yarn.nodemanager.remote-app-log-dir-suffix</name>    
  		<value>logs</value>
  		<description>集合日志后的存放地址由 ${remote-app-log-dir}/${user}/{thisParam}构成</description>
	</property>
	<property>
		<name>yarn.nodemanager.delete.debug-delay-sec</name>    
  		<value>0</value>
  		<description>application执行结束后立即删除本地文件及日志</description>
	</property>

	<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>    
</configuration>

mapred-site.xml:

<configuration>
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
	<property>
		<name>mapreduce.jobhistory.address</name>
		<value>hdfs://master:10020</value>
	</property>
	<property>  
        <name>mapreduce.jobhistory.webapp.address</name>  
        <value>master:19888</value>  
   </property>
</configuration>

Slaves文件:

slave1
slave2

14. 将核心配置全部复制到slave节点中

scp -r $HADOOP_HOME/etc/hadoop root@slave1:$HADOOP_HOME/etc/
scp -r $HADOOP_HOME/etc/hadoop root@slave2:$HADOOP_HOME/etc/

猜你喜欢

转载自blog.csdn.net/QQB67G8COM/article/details/90375949