搭建hadoop集群(先搭伪分,再搭全部)
hadoop伪分布搭建流程(都是在普通用户下)
----------------------------
一)关闭防火墙:
chkconfig iptables off
service iptables stop
chkconfig ip6tables off
service ip6tables stop
查看防火墙是否关闭 :
chkconfig iptables --list
二)我虚拟机没有ip所以我准备配置一个静态ip
静态IP的设置
--------------------------
1.VMware-->编辑-->虚拟网络编辑器-->还原默认配置-->重置网络设置
2.VMware-->编辑-->虚拟网络编辑器-->选中VM8-->关掉DHCP
3.查看网络相关配置:
子网:192.168.44.0
子网掩码:255.255.255.0
网关:192.168.44.2
4.开启虚拟机,修改相关网络文件
修改eth0文件【/etc/sysconf/network-script/ifcfg-eth0】:
$>gedit /etc/sysconfig/network-scripts/ifcfg-eth0
修改:
BOOTPROTO="static" #原值为DHCP
添加:
IPADDR="192.168.44.120" #静态IP
NETMASK="255.255.255.0" #子网掩码
NETWORK="192.168.44.0" #子网
GATEWAY="192.168.44.2" #网关
DNS1="192.168.44.2" #网关
5.生效网络:
$>service network restart
6.修改主机名与IP的映射
$>gedit /etc/hosts
$>reboot
7.修改windows中的VMWare8的网络地址为静态IP(我是win10的系统,“设置”中“更改网络设置”中的“更改网络设置”。)
三)开始搭建
1.通过上传软件将hadoop2.7.3、jdk1.8.0至/home/hyxy/soft(soft自己创建)
2.在/home/hyxy/soft解压相关软件
$>tar -zxvf jdk1.8.XXX.tar.gz
$>tar -zxvf hadoop.2.7.3.tar.gz
3.创建软连接
$>ln -s jdk1.8.0_121 jdk
$>ln -s hadoop-2.7.3 hadoop
4.修改环境变量
$>cd ~
$>gedit .bash_profile(我们的环境变量在这里配置)
在文件最后追加以下指令:
#jdk install
export JAVA_HOME=/home/hyxy/soft/jdk
export PATH=$JAVA_HOME/bin:$PATH(设置PATH环境变量的目的就是为操作系统指定寻找工具程序的目录。)
#hadoop install
export HADOOP_HOME=/home/hyxy/soft/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH(先进入到/usr/local/hadoop目录中,再执行sbin,实际上等同于运行/usr/local/hadoop/sbin。可以将hadoop命令的相关目录加入到PATH环境变量中,这样就可以直接通过start-dfs.sh开启Hadoop,也可以直接通过hdfs访问HDFS的内容,方便平时的操作。)
sbin文件夹中的文件
$>source .bash_profile
注意:刷新完之后,当前回话可用;建议reboot(重启)
5.配置SSH
a.修改hostname
$>su root
$>gedit /etc/sysconfig/network
【HOSTNAME=master】
b.修改hosts文件
$>gedit /etc/hosts
【在文件后追加:ip 主机名:192.168.142.138 master】
c.reboot;
d.生成秘钥
$>ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
【说明:-t设置生成秘钥的算法,采用的rsa;-P设置密码,默认为空;-f设置秘钥生成的文件位置,~/.ssh】
e.生成认证库
$>cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
f.修改认证库的权限为600
$>chmod 600 ~/.ssh/authorized_keys
g.ssh master
//无密登录成功!!!!
6.配置hadoop
a.找到hadoop的配置路径:cd $HADOOP_HOME/etc/hadoop
b.修改core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hyxy/tmp/hadoop</value>
</property>
c.修改hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
d.修改hadoop-env.sh中的JAVA_HOME变量
【export JAVA_HOME=/home/hyxy/soft/jdk】
e.在/home/hyxy目录下新建一个tmp/hadoop
e.格式化HDFS
$>hdfs namenode -format
f.开启hadoop守护进程
$>start-dfs.sh //开启HDFS
7.以上完成伪分布。
四)当我们在公司添加节点之后不可能全部都重启(在公司两个事不能做:1.格式化。2.所有重启),所以我们可以将单个节点进行启动。如下:
查找当前hadoop2.7.3的默认配置文件
-------------------------------------------
1.core-default.xml:【hadoop-common-2.7.3.jar】
2.hdfs-default.xml:【hadoop-hdfs-2.7.3.jar】
3.mapred-default.xml:【hadoop-mapreduce-client-core-2.7.3.jar】
4.yarn-default.xml:【hadoop-yarn-common-2.7.3.jar】
分别启动守护进程:(启动顺序不重要)
-----------------------------
1.启动namenode进程:
$>hadoop-daemons.sh --config ~/soft/hadoop/etc/hadoop_pseudo start namenode
2.启动datanode进程:
$>hadoop-daemons.sh --config ~/soft/hadoop/etc/hadoop_pseudo start datanode
3.启动secondarynamenode进程:
$>hadoop-daemons.sh --config ~/soft/hadoop/etc/hadoop_pseudo start secondarynamenode
分别停止守护进程
-----------------------------
1.启动namenode进程:
$>hadoop-daemons.sh --config ~/soft/hadoop/etc/hadoop_pseudo stop namenode
2.启动datanode进程:
$>hadoop-daemons.sh --config ~/soft/hadoop/etc/hadoop_pseudo stop datanode
3.启动secondarynamenode进程:
$>hadoop-daemons.sh --config ~/soft/hadoop/etc/hadoop_pseudo stop secondarynamenode
hadoop的瓶颈为物理存储!!!而绝非网络、内核CPU、内存
hadoop默认查找{HADOOP_HOME}/etc/hadoop
hadoop start-dfs.sh 的执行流程
-------------------------------------
【start-dfs.sh】-->【hdfs-config.sh】(说明:加载各种配置信息)
-->【hadoop-daemons.sh】(说明:执行slaves和daemon)
-->【hadoop-daemon.sh】(说明:根据command调用HDFS。执行相关操作)
-->【hdfs】(说明:执行相关操作,加载CLASS文件)
-->【调用Java底层源代码】(说明:执行相关Class文件的Main函数)
五)在伪分的基础上搭建集群
克隆虚拟机
-------------------------
1.关闭虚拟机-->选项【虚拟机】-->【管理】-->【克隆】
2.【下一步】-->【下一步】-->【选项:创建完整克隆】
3.指向本地虚拟机目录{D:\VMware-system\Centos-6.8-64-02}
4.制定虚拟机名称为:Centos-6.8-64-02
5.修改克隆后的虚拟机静态IP
a.查找eth1网络配置信息
$>cat /etc/udev/rules.d/70-persistent-net.rules
[
# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:0a:96:08", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:a0:93:96", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
]
获取eth1的MAC地址为:ATTR{address}=="00:0c:29:a0:93:96"
b.修改静态IP文件
$>gedit /etc/sysconfig/network-scripts/ifcfg-eth0
修改:
DEVICE="eth1"
HWADDR="00:0c:29:a0:93:96"
IPADDR="192.168.14.140"
c.重启网络
$>service network restart
完全分布式搭建步骤
-----------------------------------
1.克隆两个节点
2.修改静态IP
3.修改主机名:【master(主),slave1(从),slave2(从)】
4.修改IP和主机名的映射:【/etc/hosts】
5.SSH无密登录:
6.安装JDK(略)
7.安装hadoop(略)
8.配置环境变量(略)
9.修改hadoop配置文件
a.core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hyxy/tmp/hadoop</value>
</property>
b.hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
c.mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<description>
The runtime framework for executing MapReduce jobs.Can be one of local, classic or yarn.
</description>
</property>
d.yarn-site.xml
<property>
<description>A comma separated list of services where service name should only
contain a-zA-Z0-9_ and can not start with numbers</description>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<description>The hostname of the RM.</description>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
e.slaves
添加datanode节点名称,以行为准
slave1
slave2
f.hadoop-env.sh
#配置JAVA_HOME
【注意:
1).将hosts文件分发所有从节点:
$>scp /etc/hosts hyxy@slave1:/etc/
$>scp /etc/hosts hyxy@slave2:/etc/
2).将hadoop目录分发到所有从节点
$>scp -r ~/soft/hadoop/ hyxy@slave1:/home/hyxy/soft
$>scp -r ~/soft/hadoop/ hyxy@slave2:/home/hyxy/soft
】
10.格式化
a. 删除hadoop.tmp.dir设置路径下的所有文件(所有节点)
b. 删除HADOOP_LOG_DIR设置路径下的日志文件(所有节点)
c. 格式化:
$>hdfs namenode -format(主节点)
11.开启完全分布式
$>start-all.sh
sudo
--------------------
1.修改/etc/sudoers文件
$>visudo
在这行代码(root ALL=(ALL) ALL)下插入:
hyxy ALL=(ALL) ALL