设为首页 收藏本站
查看: 773|回复: 0

[经验分享] Hadoop -分布式环境搭建安装配置

[复制链接]

尚未签到

发表于 2016-12-7 07:54:44 | 显示全部楼层 |阅读模式
  集群环境:
  1 NameNode(真实主机):
  Linux yan-Server 3.4.36-gentoo #3 SMP Mon Apr 1 14:09:12 CST 2013 x86_64 AMD Athlon(tm) X4 750K Quad Core Processor AuthenticAMD GNU/Linux
  2 DataNode1(虚拟机):
  Linux node1 3.5.0-23-generic #35~precise1-Ubuntu SMP Fri Jan 25 17:13:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

  3 DataNode2(虚拟机):
  Linux node2 3.5.0-23-generic #35~precise1-Ubuntu SMP Fri Jan 25 17:13:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

  4 DataNode3(虚拟机):
  Linux node3 3.5.0-23-generic #35~precise1-Ubuntu SMP Fri Jan 25 17:13:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

  原创作品,转载请标明:
  http://blog.csdn.net/yming0221/article/details/8989203


1.安装VirtualBox虚拟机
  Gentoo下直接命令编译安装,或者官网下载二进制安装包直接安装:

emerge -av virtualbox

2.虚拟机下安装Ubuntu 12.04 LTS
  使用Ubuntu镜像安装完成后,然后再克隆另外两台虚拟主机(这里会遇到克隆的主机启动的时候主机名和MAC地址会是一样的,局域网会造成冲突)
  主机名修改文件

/etc/hostname

MAC地址修改需要先删除文件
/etc/udev/rules.d/70-persistent-net.rules

然后在启动之前设置VirtualBox虚拟机的MAC地址
DSC0000.jpg

  启动后会自动生成删除的文件,配置网卡的MAC地址。
  为了更方便的在各主机之间共享文件,可以启动主机yan-Server的NFS,将命令加入/etc/rc.local中,让客户端自动挂载NFS目录。
  删除各虚拟机的NetworkManager,手动设置静态的IP地址,例如node2主机的/etc/network/interfaces文件配置如下:

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.137.202
gateway 192.168.137.1
netmask 255.255.255.0
network 192.168.137.0
broadcast 192.168.137.255

主机的基本环境设置完毕,下面是主机对应的IP地址
类型主机名IP
NameNodeyan-Server192.168.137.100
DataNodenode1192.168.137.201
DataNodenode2192.168.137.202
DataNodenode3192.168.137.203
为了节省资源,可以设置虚拟机默认启动字符界面,然后通过主机的TERMINAL ssh远程登录。(SSH已经启动服务,允许远程登录,安装方法不再赘述)  设置方式是修改/etc/default/grub文件将下面的一行解除注释

GRUB_TERMINAL=console

然后update-grub即可。
3.Hadoop环境的配置




3.1配置JDK环境(之前就做好了,这里不再赘述)

export JAVA_HOME=/opt/jdk1.7.0_21
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

3.2在官网下载Hadoop,然后解压到/opt/目录下面(这里使用的是hadoop-2.0.4-alpha)
  然后进入目录/opt/hadoop-2.0.4-alpha/etc/hadoop,配置hadoop文件
  修改文件hadoop-env.sh

export HADOOP_FREFIX=/opt/hadoop-2.0.4-alpha
export HADOOP_COMMON_HOME=${HADOOP_FREFIX}
export HADOOP_HDFS_HOME=${HADOOP_FREFIX}
export PATH=$PATH:$HADOOP_FREFIX/bin
export PATH=$PATH:$HADOOP_FREFIX/sbin
export HADOOP_MAPRED_HOME=${HADOOP_FREFIX}
export YARN_HOME=${HADOOP_FREFIX}
export HADOOP_CONF_HOME=${HADOOP_FREFIX}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_FREFIX}/etc/hadoop
export JAVA_HOME=/opt/jdk1.7.0_21

修改文件hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/hadoop-2.0.4-alpha/workspace/name</value>
<description>Determines where on the local filesystem the DFS name node should store the name table.If this is a comma-delimited list of directories,then name table is replicated in all of the directories,for redundancy.</description>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/hadoop-2.0.4-alpha/workspace/data</value>
<description>Determines where on the local filesystem an DFS data node should store its blocks.If this is a comma-delimited list of directories,then data will be stored in all named directories,typically on different devices.Directories that do not exist are ignored.
</description>
<final>true</final>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permission</name>
<value>false</value>
</property>
</configuration>
  
修改文件mapred-site.xml

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.job.tracker</name>
<value>hdfs://yan-Server:9001</value>
<final>true</final>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>1536</value>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx1024M</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>3072</value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx2560M</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>mapred.system.dir</name>
<value>file:/opt/hadoop-2.0.4-alpha/workspace/systemdir</value>
<final>true</final>
</property>
<property>
<name>mapred.local.dir</name>
<value>file:/opt/hadoop-2.0.4-alpha/workspace/localdir</value>
<final>true</final>
</property>
</configuration>
  
修改文件yarn-env.xml

export HADOOP_FREFIX=/opt/hadoop-2.0.4-alpha
export HADOOP_COMMON_HOME=${HADOOP_FREFIX}
export HADOOP_HDFS_HOME=${HADOOP_FREFIX}
export PATH=$PATH:$HADOOP_FREFIX/bin
export PATH=$PATH:$HADOOP_FREFIX/sbin
export HADOOP_MAPRED_HOME=${HADOOP_FREFIX}
export YARN_HOME=${HADOOP_FREFIX}
export HADOOP_CONF_HOME=${HADOOP_FREFIX}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_FREFIX}/etc/hadoop
export JAVA_HOME=/opt/jdk1.7.0_21

修改文件yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.address</name>
<value>yan-Server:8080</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>yan-Server:8081</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>yan-Server:8082</value>
</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>
  将配置好的Hadoop复制到各DataNode(这里DataNode的JDK配置和主机的配置是一致的,不需要再修改JDK的配置)


3.3 修改主机的/etc/hosts,将NameNode加入该文件

192.168.137.100yan-Server
192.168.137.201node1
192.168.137.202node2
192.168.137.203node3

3.4 修改各DataNode的/etc/hosts文件,也添加上述的内容

192.168.137.100yan-Server
192.168.137.201node1
192.168.137.202node2
192.168.137.203node3

3.5 配置SSH免密码登录(所有的主机都使用root用户登录)
  主机上运行命令

ssh-kengen -t rsa一路回车,然后复制.ssh/id_rsa.pub为各DataNode的root用户目录.ssh/authorized_keys文件  然后在主机上远程登录一次

ssh root@node1首次登录可能会需要输入密码,之后就不再需要。(其他的DataNode也都远程登录一次确保可以免输入密码登录)
4.启动Hadoop
  为了方便,在主机的/etc/profile配置hadoop的环境变量,如下:

export HADOOP_PREFIX="/opt/hadoop-2.0.4-alpha"
export PATH=$PATH:$HADOOP_PREFIX/bin
export PATH=$PATH:$HADOOP_PREFIX/sbin
export HADOOP_MAPRED_HOME=${HADOOP_PREFIX}
export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
export HADOOP_HDFS_HOME=${HADOOP_PREFIX}
export YARN_HOME=${HADOOP_PREFIX}



4.1 格式化NameNode

hdfs namenode -format
4.2 启动全部进程

start-all.sh
DSC0001.jpg
在浏览器查看,地址:  http://localhost:8088/

DSC0002.jpg

  所有数据节点DataNode正常启动。

4.3 关闭所有进程

stop-all.sh
DSC0003.jpg   至此,Hadoop环境搭建基本结束。
上面使用的是alpha版本,不是稳定版,稳定版的配置文件会有所不同,如果照搬会可能导致jobtracker或tasktracker无法启动的问题。遇到问题查看日志文件。
  下面是我配置的1.1.2稳定版本的配置文件:
  conf/core-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://yan-Server:49000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp</value>
</property>
</configuration>

conf/hadoop-env.sh
export HADOOP_FREFIX=/opt/hadoop-1.1.2
export HADOOP_COMMON_HOME=${HADOOP_FREFIX}
export HADOOP_HDFS_HOME=${HADOOP_FREFIX}
export PATH=$PATH:$HADOOP_FREFIX/bin
export PATH=$PATH:$HADOOP_FREFIX/sbin
export HADOOP_MAPRED_HOME=${HADOOP_FREFIX}
export YARN_HOME=${HADOOP_FREFIX}
export HADOOP_CONF_HOME=${HADOOP_FREFIX}/conf
export YARN_CONF_DIR=${HADOOP_FREFIX}/conf
export JAVA_HOME=/opt/jdk1.7.0_21

conf/hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/opt/hadoop-1.1.2/workspace/name</value>
<description>Determines where on the local filesystem the DFS name node should store the name table.If this is a comma-delimited list of directories,then name table is replicated in all of the directories,for redundancy.</description>
<final>true</final>
</property>
<property>
<name>dfs.data.dir</name>
<value>/opt/hadoop-1.1.2/workspace/data</value>
<description>Determines where on the local filesystem an DFS data node should store its blocks.If this is a comma-delimited list of directories,then data will be stored in all named directories,typically on different devices.Directories that do not exist are ignored.
</description>
<final>true</final>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permission</name>
<value>false</value>
</property>
</configuration>
  

conf/mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hdfs://yan-Server:9001</value>
<final>true</final>
</property>
</configuration>


  conf/masters中填写NameNode主机名
  conf/slaves中填写DataNode主机名


  

  参考:
  1.实战Hadoop--开启通向云计算的捷径(刘鹏)
  2.http://www.cnblogs.com/aniuer/archive/2012/07/16/2594448.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-310647-1-1.html 上篇帖子: [转]Getting Started with Hadoop, Part 1 下篇帖子: hadoop 分布式文件系统安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表