title: 搭建全分布式Hadoop
date:2017-12-25 22:12:54
环境准备
- 想要搭建全分布式hadoop, 我们至少要有两台机器, 一台做主节点, 一台做从节点. 本人是选择开启虚拟机来实现
- hadoop资源下载 密码: c2vw
虚拟机配置
- 虚拟机选择,本人使用的是Virtual Box, Vmvare也可以, 这个无所谓,
- 其他都没什么讲的, 创建虚拟机的时候一路回车就好了, 但是网络模式记得改为桥接, 不要使用NAT网络地址转换
文件传输
-
将文件传输到服务器上, 因为我用的是Ubuntu Server所以用ssh传输
scp local_file remote_user@remote_ip:/home/user_name
- local_file: 本地文件名(使用绝对地址)
- remote_user: 远程主机用户名, 用户名相同时可省略
- remote_ip: 远程主机ip, 不知道的话使用ifconfig命令查看即可
- /home/user_name: 你想传输文件到远程主机的地址
其他配置
- 找到上传文件的地址, 执行install.sh
- 执行完shell脚本后, 使用hadoop version查看hadoop是否成功安装
- 修改/etc/hostname, 给两个结点改名, 我这里主节点改名为master, 从结点改名为slaver0
-
修改/etc/hosts, 将第二行127.0.1.1全部注释掉, 在下面添加IP地址和对应的主机名
- MAIN_IP master
- SLAVER_IP slaver0
- 在hadoop安装目录创建logs目录并更改拥有者和所属组
sudo mkdir /opt/hadoop/logs
chown -R mapred logs
chgrp -R hadoop logs
sudo chmod 775 logs
xml配置
- 修改/opt/hadoop/etc/hadoop/core-site.xml 指明在集群中谁承担主节点的角色
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://MAIN_IP:9000</value>
</property>
</configuration>
#9000是端口, 不允许改动 这里的MAIN_IP是指当做主节点的虚拟机的IP,下同
- 修改/opt/hadoop/etc/hadoop/mapred-site.xml
<configuration>
<!-- 指定MapReduce程序运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
- 修改/opt/hadoop/etc/hadoop/yarn-site.xml
<configuration>
<!--指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>MAIN_IP</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yran.nodemanager.local-dirs</name>
<value>/data/hadoop/yarn/logs</value>
</property>
</configuration>
- 修改/opt/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.nameservices</name>
<value>hadoop-cluster1</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/data/hadoop/hdfs/snn</value>
</property>
<property>
<name>fs.checkpoint.dir</name>
<value>file:/data/hadoop/hdfs/snn</value>
</property>
<property>
<name>fs.checkpoint.edits.dir</name>
<value>file:/data/hadoop/dfhs/snn</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/data/hadoop/hdfs/dn</value>
/property>
</configuration>
建立yarn和hdfs执行所需目录
-
建立data目录
sudo mkdir /data
-
在/data目录下新建hadoop目录
sudo mkdir /data/hadoop
-
在hadoop目录下新建hdfs和yarn目录
sudo mkdir /data/hadoop/hdfs
sudo mkdir /data/hadoop/yarn
-
在hdfs目录下新建dn, nn, snn目录
sudo mkdir /data/hadoop/hdfs/dn
sudo mkdir /data/hadoop/hdfs/nn
sudo mkdir /data/hadoop/hdfs/snn
-
在yarn目录下新建logs, nm目录
sudo mkdir /data/hadoop/yarn/logs
sudo mkdir /data/hadoop/yarn/nm
-
更改hdfs和yarn所属用户和用户组
sudo chown -R hdfs hdfs/
sudo chgrp -R hadoop hdfs/
sudo chgrp -R hadoop yarn/
格式化
- hdfs namenode -format 记住这个主节点和从节点都需要格式化, 不能只格式化一个
其他服务器配置
- 在其他服务器上, 也是同样的操作, 可以不重新配置, 将我们改过的配置文件, 用tar打包scp发送至其他服务器, 覆盖安装即可
服务器集群及关闭
使用 su - hdfs, 进入hdfs账户 默认密码hadoop
在主节点上启动
- hadoop-daemon.sh start/stop namenode
- yarn-daemon.sh start/stop resourcemanager
在从节点上启动
- hadoop-daemon.sh start/stop datenode
- yarn-daemon.sh start/stop nodemanager
- 如果想偷懒的话,可以在主节点上使用start/stop-all.sh
监控平台
- HDFS集群: http://NAMENODE_MAIN_IP:50070
- YARN集群: http://RESOURCEMANAGER_MAIN_IP:8088
可能会遇到的错误
- install.sh无法执行, 注意看是否有执行权限, 如果没有的话使用chmod命令添加执行权限,
- hadoop version显示没有这个命令, 看看自己~/.bashrc文件里有没有如下代码
export JAVA_HOME=/opt/jdk
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
没有的话加进去 - 东西搭起来后, 发现DataNode在master上, 更改/opt/hadoop/etc/hadoop/slaves, 默认是localhost, 改为SLAVER_IP
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。