大数据技术之Apache Hadoop 分布式集群搭建和部署

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

环境:Windows 10 VMWare Workstation 12 上两个Centos 6版本的虚拟机。
软件:SecureCRT / WinSCP。

步骤:
(1) 安装jdk。
从Oracle官网下载jdk包,解压到任意目录如/usr/local/java。
输入vi /etc/profile回车,末尾追加:
export JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
要验证安装成功,输入java -version回车,输出是下载的版本就对了,如我的输出:
java version "1.8.0_151"
SE Runtime Environment (build 1.8.0_151-b12)
64-Bit Server VM (build 25.151-b12, mixed mode)
(2) 修改网络、主机名相关配置。
编辑Windows下C:\Windows\System32\drivers\etc\hosts文件。假定两台主机名分别为host1/host2,IP分别为IP1/IP2,那么需要在hosts文件末尾追加:
IP1        host1
IP2        host2
分别进入两台虚拟机修改主机名。以host1为例,执行vi /etc/sysconfig/network,设定HOSTNAME=host1,执行写入;然后执行vi /etc/hosts,末尾追加两行
IP1        host1
IP2        host2
执行写入。重新启动Centos,发现登陆时主机名已经变更。
设置NAT联网。设置虚拟机的网络适配器使用NAT模式。
获取vmnet8适配器IP地址。从Windows主机查看vmnet8适配器IP,位置是设置->网络和Internet->以太网->VMware Network Adapter VMnet8。

设置虚拟机网络。进入Centos图形化界面,上方任务栏有个网络图标,右键单击选Edit Connections,选择System eth0并单击Edit,进行网络配置。设置IPv4连接方式为手动、地址为自定义、掩码为255.255.255.0,网关和DNS服务器为vmnet8适配器IP地址

重启网络服务。在虚拟机中执行service network restart,重启网络,此时应该通过SecureCRT/Putty等工具连接到虚拟机了。

(3) 配置SSH无密码登录。
host1/host2中生成公钥。执行ssh-keygen -t rsa,会在~/.ssh/生成两个文件id_rsa/id_rsa.pub分别对应私钥和公钥。
将host1的公钥发送到host2。在host1输入cd ~/.ssh/回车,执行cat id_rsa.pub > authorized_keys,执行scp authorized_keys host2:~/.ssh/authorized_keys_new,按照提示输入密码。
在host2合并公钥。输入cd ~/.ssh/回车,执行cat authorized_keys_new >> authorized_keys,然后删除刚才收到的文件rm -f authorized_keys_new。
将host2的authorized_keys发送到host1。在host2执行scp authorized_keys host1:~/.ssh/,按照提示输入密码,完成发送。
配置结束,可以输入ssh host1/host2进行测试了,如果无需密码即可登录表示配置成功了。

(4) 部署Apache Hadoop集群。
从Hadoop 官网下载hadoop-2.7.5.tar.gz。使用WinSCP发送到两台虚拟机中。
使用tar -zxvf 命令解压文件到/usr/local/hadoop路径下,然后键入cd /usr/local/hadoop/etc/hadoop回车,准备配置Hadoop集群。集群内各主机配置应当保持一致,首先对master进行配置。
配置hadoop-env.sh。vi hadoop-env.sh,在末尾追加以下变量。
export JAVA_HOME=/usr/local/java/
export HADOOP_PID_DIR=/usr/local/hadoop/piddir/


配置core-site.xml。vi core-site.xml,在configuration标签中加入以下属性:
 <property>
  <name>fs.defaultFS</name>
  <value>hdfs://192.168.137.200:9000</value>
 </property>
 <property>
  <name>io.file.buffer.size</name>
  <value>131072</value>
 </property>

 <property>
  <name>hadoop.tmp.dir</name>
  <value>/usr/local/hadoop/tmpdir</value>
 </property>
配置hdfs-site.xml。vi hdfs-site.xml,在configuration标签中加入以下属性:
 <!--for namenode-->
 <property>
  <name>dfs.namenode.name.dir</name>
  <value>file:///usr/local/hadoop/dir_namenode</value>
 </property>
 <property>
  <name>dfs.hosts</name>
  <value>/usr/local/hadoop/etc/hadoop/dfs.hosts.conf</value>
 </property>
 <property>
  <name>dfs.blocksize</name>
  <value>268435456</value>
 </property>
 <property>
  <name>dfs.namenode.handler.count</name>
  <value>100</value>
 </property>
 <!--for datanode-->
 <property>
  <name>dfs.datanode.data.dir</name>
  <value>file:///usr/local/hadoop/dir_datanode</value>
 </property>

 <property>
  <name>dfs.http.address</name>
  <value>192.168.137.200:9008</value>
 </property>
 <property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>192.168.137.201:9008</value>
 </property>
配置yarn-site.xml。加入以下属性:
 <!--for resourcemgr and nodemgr-->
 <property>
  <name>yarn.acl.enable</name>
  <value>false</value>
 </property>
 <property>
  <name>yarn.admin.acl</name>
  <value>*</value>
 </property>
 <property>
  <name>yarn.log-aggregation-enable</name>
  <value>false</value>
 </property>
 
 <!--for resourcemgr-->
 <property>
  <name>yarn.resourcemanager.address</name>
  <value>192.168.137.200:9001</value>
 </property>
 <property>
  <name>yarn.resourcemanager.scheduler.address</name>
  <value>192.168.137.200:9002</value>
 </property>
 <property>
  <name>yarn.resourcemanager.resource-tracker.address</name>
  <value>192.168.137.200:9003</value>
 </property>
 <property>
  <name>yarn.resourcemanager.admin.address</name>
  <value>192.168.137.200:9004</value>
 </property>
 <property>
  <name>yarn.resourcemanager.webapp.address</name>
  <value>192.168.137.200:9005</value>
 </property>
 <property>
  <name>yarn.resourcemanager.hostname</name>
  <value>192.168.137.200</value>
 </property>
 <property>
  <name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
 </property>
 
 <property>
  <name>yarn.scheduler.minimum-allocation-mb</name>
  <value>256</value>
 </property>
 <property>
  <name>yarn.scheduler.maximum-allocation-mb</name>
  <value>768</value>
 </property>

 <!--for nodemgr-->
 <property>
  <name>yarn.nodemanager.resource.memory-mb</name>
  <value>768</value>
 </property>
 <property>
  <name>yarn.nodemanager.local-dirs</name>
  <value>file:///usr/local/hadoop/dir_yarn_nodemanager/localdir1,file:///usr/local/hadoop/dir_yarn_nodemanager/localdir2,file:///usr/local/hadoop/dir_yarn_nodemanager/localdir3</value> 
 </property>
 <property>
  <name>yarn.nodemanager.log-dirs</name>
  <value>file:///usr/local/hadoop/dir_yarn_nodemanager/logdir1,file:///usr/local/hadoop/dir_yarn/nodemanager/logdir2,file:///usr/local/hadoop/dir_yarn_nodemanager/logdir3</value>
 </property>
 <property>
  <name>yarn.nodemanager.log.retain-seconds</name>
  <value>10800</value>
 </property>
 <property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
 </property>
配置mapred-site.xml。加入以下属性:
 <property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
 </property>
 <property>
  <name>mapreduce.map.memory.mb</name>
  <value>768</value>
 </property>
 <property>
  <name>mapreduce.map.java.opts</name>
  <value>-Xmx768M</value>
 </property>
 <property>
  <name>mapreduce.reduce.memory.mb</name>
  <value>768</value>
 </property>
 <property>
  <name>mapreduce.reduce.java.opts</name>
  <value>-Xmx768M</value>
 </property>
 <property>
  <name>mapreduce.task.io.sort.mb</name>
  <value>512</value>
 </property>
 <property>
  <name>mapreduce.task.io.sort.factor</name>
  <value>100</value>
 </property>
 <property>
  <name>mapreduce.reduce.shuffle.parallelcopies</name>
  <value>50</value>
 </property>
 <property>
  <name>mapreduce.jobhistory.address</name>
  <value>192.168.137.200:9006</value>
 </property>
 <property>
  <name>mapreduce.jobhistory.webapp.address</name>
  <value>192.168.137.200:9007</value>
 </property>
 <property>
  <name>mapreduce.jobhistory.intermediate-done-dir</name>
  <value>file:///usr/local/hadoop/mr-history/tmp</value>
 </property>
 <property>
  <name>mapreduce.jobhistory.done-dir</name>
  <value>file:///usr/local/hadoop/mr-history/done</value>
 </property>
master配置完成后,将配置文件通过scp命令发送到datanode主机中,确保集群内配置一致,这样Hadoop集群已经完成配置。

(5) 启动Hadoop集群。
初次启动要进行一次格式化。切换到/usr/local/hadoop目录下,执行bin/hdfs namenode -format 指令。如果格式化出现问题需要重新格式化,应当先将hdfs-site.xml中指定的dfs.name.dir/dfs.data.dir以及core-site.xml中指定的hadoop.tmp.dir目录全部删除。
格式化完成后,执行指令sbin/start-all.sh即可启动集群。


猜你喜欢

转载自blog.csdn.net/Frank_Adam/article/details/79210588
今日推荐