完全分布式Hadoop集的安装搭建和配置(4节点)
Hadoop版本:hadoop-2.5.
⼀、准备⼯作
在Master节点完成基本⼯作,包括配置Hadoop⽤户,安装配置ssh,安装配置java环境,这个阶段给⼒星同学写得很详细,每⼀步都有解释。
1、新建hadoop⽤户
建议安装虚拟机时使⽤hadoop⽤户名,如果不是,新增⼀个hadoop⽤户:
sudo useradd -m hadoop -s /bin/bash
为hadoop⽤户设置密码,建议所有密码都设置为hadoop:
sudo passwd hadoop
为hadoop⽤户增加管理员权限:
hadoop分布式集搭建sudo adduser hadoop sudo
最后注销当前⽤户(点击屏幕右上⾓的齿轮,选择注销),在登陆界⾯使⽤刚创建的 hadoop⽤户进⾏登陆。⽤ hadoop ⽤户登录后,我们先更新⼀下 apt,⽅便后续安装软件:
sudo apt-get update
安装Vim进⾏⽂本编辑:
sudo apt-get install vim
2、安装配置ssh
集、单节点模式都需要⽤到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上⾯运⾏命
令),Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server:
sudo apt-get install openssh-server
配置ssh⽆密码登录的步骤我们后边再做。
3、安装配置java环境
直接通过命令安装 OpenJDK7:
sudo apt-get install openjdk-7-jre openjdk-7-jdk
安装好 OpenJDK 后,需要到相应的安装路径,这个路径是⽤于配置 JAVA_HOME 环境变量的。执⾏如下命令:
dpkg -L openjdk-7-jdk | grep '/bin/javac'
该命令会输出⼀个路径,除去路径末尾的 “/bin/javac”,剩下的就是正确的路径了。如输出路径为/usr/lib/jvm/java-7-openjdk-amd64/bin/javac,则我们需要的路径为/usr/lib/jvm/java-7-openjdk-amd64。接着配置 JAVA_HOME 环境变量,为⽅便,我们在 ~/.bashrc 中进⾏设置:
vim ~/.bashrc
在⽂件最前⾯添加如下单独⼀⾏(注意 = 号前后不能有空格),将“JDK安装路径”改为上述命令得到的路径,并保存:
export JAVA_HOME=JDK安装路径
接着还需要让该环境变量⽣效,执⾏如下代码:
source ~/.bashrc # 使变量设置⽣效
【在 Linux系统中,~代表的是⽤户的主⽂件夹,即“/home/⽤户名”这个⽬录,如你的⽤户名为hadoop,则 ~就代表“/home/hadoop/”。】
4、克隆节点
我把Master节点在Virtualbox中克隆了3次,分别命名Slave1,Slave2和Slave3,⽹络连接⽅式改为桥接,在所有节点上都要做如下2件事:
修改主机名,和我们设定的节点名称对应(重启系统⽣效):
vim /etc/hostname
把你的所有主机名和对应的ip地址加进去(ifconfig查看本机ip)
vim /etc/hosts
所有节点都完成后,测试⼀下能不能ping通。
ping Slave1 -c 3 # ping Slave1节点,-c3表⽰只ping 3次,按Ctrl+c中断命令
5、配置ssh⽆密码登录
在Master节点执⾏:
cd ~/.ssh/ # 若没有该⽬录,请先执⾏⼀次ssh localhost,然后使⽤exit退出
ssh-keygen -t rsa # 会有提⽰,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys # 加⼊授权
此时再⽤ ssh localhost 命令,⽆需输⼊密码就可以直接登陆了。
接着在 Master 节点将公匙传输到 Slave1 节点:
scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/
然后在Slave1节点上操作,将 ssh 公匙加⼊授权:
mkdir ~/.ssh # 如果不存在该⽂件夹需先创建,若已存在则忽略
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub # ⽤完就可以删掉了
在别的Slave节点上也要做传输和授权公钥的步骤!
这样,在 Master 节点上就可以⽆密码 SSH 到各个 Slave 节点了。
【scp 是 secure copy 的简写,⽤于在 Linux 下进⾏远程拷贝⽂件,类似于 cp 命令,不过 cp 只能在本机中拷贝。如果在scp传⽂件时报错,出现permission denied,到⽬标⽂件修改权限就⾏了:
sudo chown –R hadoop 路径
如果修改权限时报错:/etc/sudoers属于⽤户id1000应为0或没有到有效的sudoers资源,把上述命令中的sudo去掉就⾏了】
⼆、安装配置Hadoop
1、主节点安装和配置hadoop
我使⽤的是2.5.1的64位版本,安装包放在了“~/下载”这个路径下,Master节点下执⾏:
sudo tar -zxf ~/下载/hadoop-2.6. -C /usr/local # 解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-2.6.0/ ./hadoop # 将⽂件夹名改为hadoop
sudo chown -R hadoop ./hadoop # 修改⽂件权限
【./为当前的路径下的⽂件,⽽/为根⽬录,⽐如我在/usr/local/hadoop路径下执⾏cd ./bin就是进
⼊/usr/local/hadoop/bin/hadoop⽬录。Ps:cd ..是回上⼀层⽬录】
装完后要改配置⽂件,Hadoop 的配置⽂件位于 /usr/local/hadoop/etc/hadoop/ 中,在主节点Master上述⽬录下修改l和l和slaves这三个配置⽂件:
l
添加如下内容(myhadoop这⼀项是⾃⼰随便取的,叫什么都可以):
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://myhadoop</value>
</property>
<property>
<name&keeper.quorum</name>
<value>Master:2181,Slave1:2181,Slave2:2181</value>
</property>
<property>
<name&p.dir</name>
<value>/opt/hadoop2</value>
</property>
</configuration>
然后修改另⼀个:
l
添加如下内容:
<configuration>
<property>
<name>dfs.nameservices</name>
<value> myhadoop </value>
</property>
<property>
<name>dfs.ha.namenodes. myhadoop </name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.1</name>
<value>Master:8020</value>
</property>
<property>
<name>dfs.2</name>
<value>Slave1:8020</value>
</property>
<property>
<name>dfs.namenode.http-address. 1</name>
<value>Master:50070</value>
</property>
<property>
<name>dfs.namenode.http-address. 2</name>
<value>Slave1:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://Slave1:8485;Slave2:8485;Slave3:8485/ myhadoop </value>
</property>
<property>
<name>dfs.client.failover.proxy.provider. myhadoop </name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property>
<property>
<name>dfs.hods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/jn/data</value>
</property>
<property>
<name>dfs.abled</name>
<value>true</value>
</property>
</configuration>
最后修改这个:
vim slaves
添加如下内容(标⽰DataNode节点):
Slave1
Slave2
Slave3
2、把配好的hadoop传给别的节点
cd /usr/local
sudo rm -r ./hadoop/tmp # 删除 Hadoop 临时⽂件
sudo rm -r ./hadoop/logs/* # 删除⽇志⽂件
tar -zcf ~/hadoop. ./hadoop # 先压缩再复制
cd ~
scp ./hadoop. Slave1:/home/hadoop
scp ./hadoop. Slave2:/home/hadoop
scp ./hadoop. Slave3:/home/hadoop
然后在所有Slave节点执⾏:
sudo rm -r /usr/local/hadoop # 删掉旧的(如果存在)
sudo tar -zxf ~/hadoop. -C /usr/local
sudo chown -R hadoop /usr/local/hadoop
三、配置HA和启动
1、zookeeper
下载zookeeper包(我⽤的3.4.6版本)解压到/user/local并改成简单的名⼦zookeeper(这个过程的操作和装Hadoop包那⼀步是⼀样的),复制这个⽬录下的conf⽬录⾥的zoo_sample.cfg⽂件,重命名为zoo.cfg保存在同⽬录,命令如下:
cp -a zoo_sample.cfg zoo.cfg
然后修改zoo.cfg,命令如下:
vim zoo.cfg
修改dataDir后的路径为/opt/zookeeper(这是在opt⽬录创建⼀个zookeeper的⽂件),接着在最后添加如下三⾏(就是在这三个节点上配置zookeeper):
server.1=Master:2888:3888
server.2=Slave1:2888:3888
server.3=Slave2:2888:3888
然后在opt⽬录下创建zookeeper⽂件,在⽂件内新建⼀个myid⽂件并修改:
mkdir /opt/zookeeper
cd /opt/zookeeper/
vim myid
添加⼀个数字1就⾏,然后把zookeeper⽬录传到别的zk节点(即slave1和2)的相同⽬录(和传ssh公钥的操作相同),并修改myid.(Slave1修改为2,Slave2修改为3)
然后给zk添加Path变量(这⼀步各个zk节点都要做,也就是要做3次):
vim /etc/profile
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论