Hadoop2.6在CentOs6.8上进行集群安装配置教程

Hadoop集群安装配置教程

Hadoop 集群的安装配置大致为如下流程:

1.     选定一台机器作为 Master

2.     在 Master 节点上配置 hadoop 用户、安装 SSH server、安装 Java 环境

3.     在 Master 节点上安装 Hadoop,并完成配置

4.     在其他 Slave 节点上配置 hadoop 用户、安装 SSH server、安装 Java 环境

5.     将 Master 节点上的/usr/local/hadoop 目录复制到其他 Slave 节点上

6.     在 Master 节点上开启 Hadoop

配置 hadoop 用户、安装 SSH server、安装 Java 环境、安装 Hadoop 等过程已经在Hadoop安装教程_单机/伪分布式配置或 CentOS安装Hadoop_单机/伪分布式配置中有详细介绍,请前往查看,不再重复叙述。

 

 

具体实施步骤:

1)     创建一个hadoop用户,命令为useradd -mhadoop -s /bin/bash#创建新的用户。修改密码passwd hadoop,增加管理员权限,方便部署。执行sudo visudo,找到第98行左右,在root ALL(ALL) ALL这行下面添加hadoop ALL=(ALL)ALL当中的间隔为tab,如下图所示:



2)     如果是用 CentOS 6.x 系统,则是修改 /etc/sysconfig/network文件,命令为sudo vim /etc/sysconfig/network,改为HOSTNAME=Master。如下图所示:


3)     然后执行如下命令修改自己所用节点的IP映射,命令为sudovim /etc/hosts,本教程所使用的三个节点的名称和对应的IP关系如下:

10.154.4.25Master

10.154.4.26Slave1

10.154.4.27Slave2

我们在/etc/hosts中将该映射关系写上去即可,如下图所示。


4)     修改完成后需要重启一下,重启后在终端中才会看到机器名的变化。接下来的教程中请注意区分 Master 节点与 Slave 节点的操作。如上面讲的是 Master 节点的配置,而在其他的 Slave 节点上,也要对 /etc/hostname(修改为 Slave1、Slave2 等) 和/etc/hosts(跟 Master 的配置一样)这两个文件进行修改!


5)     配置好以后需要在各个节点上执行如下命令,测试是否互相ping得通,如果ping不通,后面就无法顺利配置成功,命令为:ping Master -c 3   ping Slave 1 -c 3,结果下图所示



6)     SSH无密码登陆节点,这个操作是将Master节点可以无密码SSH登陆到各个Slave节点上。

首先要生成Master节点的公匙,在Master节点的终端中执行(因改过主机名,所以还需要删掉原有的再重新生成一次)

命令为:cd ~/.ssh

rm./id_rsa*

ssh-keygen -t rsa

让Master节点能够无密码登陆SSH本机,在Master节点上执行

cat./id_rsa.pub>>./authorized_keys

完成后可执行ssh Master验证一下,可能需要输入yes,接着在Master节点上将公匙传输到Slave1节点,命令为:scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/

scp是 secure copy 的简写,用于在 Linux 下进行远程拷贝文件,类似于 cp 命令,不过 cp 只能在本机中拷贝。执行 scp 时会要求输入 Slave1 上hadoop 用户的密码(hadoop)。


7)     安装java环境

Java环境可选择 Oracle 的 JDK,或是OpenJDK,现在一般 Linux 系统默认安装的基本是 OpenJDK,如 CentOS 6.4 就默认安装了 OpenJDK 1.7。按 http://wiki.apache.org/hadoop/HadoopJavaVersions 中说的,Hadoop 在 OpenJDK 1.7 下运行是没问题的。需要注意的是,CentOS 6.4 中默认安装的只是 Java JRE,而不是 JDK,为了开发方便,我们还是需要通过 yum 进行安装 JDK,安装过程中会让输入 [y/N],输入 y 即可:

sudoyum install java-1.7.0-openjdk java-1.7.0-openjdk-devel

 

8)     配置JAVA_HOME环境变量,为了方便,在~/.bashrc中进行设置

vim~/.bashrc

在文件最后一行添加指向JDK的安装位置,并保存

exportJAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.181.x86_64

使环境变量生效source ~/.bashrc

 

9)     检验是否设置正确

echo$JAVA_HOME                   #检验变量值

java-version

$JAVA_HOME/bin/java/-version        #与直接执行java-version一样

 

10)  hadoop单机配置

首先在网站上下载hadoop,命令为wget https://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.6.5/hadoop-2.6.5.tar.gz,下载保存目录为根目录。

下载成功界面


 

11)  解压安装文件到/usr/loacl

sudo tar -zxf ~/hadoop-2.6.5.tar.gz -C /usr/local

 

12)  文件夹名改为hadoop  

mv hadoop-2.6.5 hadoop

 

13)  修改文件权限

sudo chown -R hadoop:hadoop ./hadoop

 

14)  Hadoop 解压后即可使用。输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:

cd/usr/local/hadoop

./bin/hadoopversion

 

15)  出现Error: JAVA_HOME is not set and could not be found。

原以为是java环境变量有问题,经反复检查发现环境变量并没有问题,最后经大量查阅发现其实是hadoop里面hadoop-env.sh文件里面的java路径设置不对,在hadoop/etc/hadoop目录下,打开hadoop-env.sh脚本

修改export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.181.x86_64


hadoop/sbin目录下执行./start-all.sh重启,问题解决

 

16)  配置集群/分布式环境

集群/分布式模式需要修改 /usr/local/hadoop/etc/hadoop 中的5个配置文件,更多设置项可点击查看官方说明,这里仅设置了正常启动所必须的设置项:slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml

 

17)  文件 slaves,将作为 DataNode 的主机名写入该文件,每行一个,默认为 localhost,所以在伪分布式配置时,节点即作为 NameNode 也作为 DataNode。分布式配置可以保留 localhost,也可以删掉,让 Master 节点仅作为 NameNode 使用。

 

18)  本教程让 Master 节点仅作为 NameNode 使用,因此将文件中原来的 localhost 删除,只添加一行内容:Slave1、Slave2

 

19)  文件 core-site.xml 改为下面的配置

<configuration>

  <property>

    <name>fs.defaultFS</name>

   <value>hdfs://Master:9000</value>

  </property>

  <property>

    <name>hadoop.tmp.dir</name>

   <value>file:/usr/local/hadoop/tmp</value>

    <description>Abasefor other temporary directories.</description>

</property>

</configuration>

 

20)  文件 hdfs-site.xml,dfs.replication一般设为 3,但我们有两个 Slave 节点,所以 dfs.replication 的值还是设为 1:

<configuration>

  <property>

   <name>dfs.namenode.secondary.http-address</name>

    <value>Master:50090</value>

  </property>

  <property>

    <name>dfs.replication</name>

    <value>1</value>

  </property>

  <property>

   <name>dfs.namenode.name.dir</name>

   <value>file:/usr/local/hadoop/tmp/dfs/name</value>

  </property>

  <property>

   <name>dfs.datanode.data.dir</name>

   <value>file:/usr/local/hadoop/tmp/dfs/data</value>

  </property>

 </configuration>

 

21)  文件 mapred-site.xml (可能需要先重命名,默认文件名为 mapred-site.xml.template),然后配置修改如下:

<configuration>

<property>

         <name>mapreduce.framework.name</name>

         <value>yarn</value>

   </property>

     <property>

        <name>mapreduce.jobhistory.address</name>

         <value>Master:10020</value>

     </property>

   <property>

        <name>mapreduce.jobhistory.webapp.address</name>

        <value>Master:19888</value>

   </property>

</configuration>

 

22)  文件 yarn-site.xml:

<configuration>

<property>

  <name>yarn.resourcemanager.hostname</name>                 

  <value>Master</value>

</property>

<property>

  <name>yarn.nodemanager.aux-services</name>

   <value>mapreduce_shuffle</value>

</property>

</configuration>

 

23)  配置好后,将 Master 上的/usr/local/Hadoop 文件夹复制到各个节点上。因为之前有跑过伪分布式模式,建议在切换到集群模式前先删除之前的临时文件。在 Master 节点上执行:

cd /usr/local

sudo rm -r ./hadoop/tmp     # 删除 Hadoop 临时文件

sudo rm -r./hadoop/logs/*   # 删除日志文件

tar -zcf~/hadoop.master.tar.gz ./hadoop   # 先压缩再复制

cd ~

scp./hadoop.master.tar.gz Slave1:/home/hadoop

scp./hadoop.master.tar.gz Slave2:/home/hadoop

 

24)  在节点Slave1上执行

sudorm -r /usr/local/hadoop    # 删掉旧的(如果存在)

sudotar -zxf /home/hadoop/hadoop.master.tar.gz -C /usr/local

sudochown -R hadoop /usr/local/hadoop

同理

在节点Slave2上执行

 

25)  首次启动需要先在 Master 节点执行 NameNode 的格式化:

hdfs namenode -format

 

26)  CentOS系统需要关闭防火墙

CentOS系统默认开启了防火墙,在开启 Hadoop 集群之前,需要关闭集群中每个节点的防火墙。有防火墙会导致 ping 得通但 telnet 端口不通,从而导致 DataNode 启动了,但 Live datanodes 为 0 的情况。

在 CentOS 6.x 中,可以通过如下命令关闭防火墙

 

27)  sudo service iptables stop   # 关闭防火墙服务

sudochkconfig iptables off  # 禁止防火墙开机自启,就不用手动关闭了


28)  接着可以启动 hadoop 了,启动需要在 Master 节点上进行:

start-dfs.sh

start-yarn.sh

mr-jobhistory-daemon.shstart historyserver


29)  通过命令 jps 可以查看各个节点所启动的进程。正确的话,在Master 节点上可以看到 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 进程,如下图所示:



30)  在Slave1节点上可以看见DataNode 和 NodeManager 进程,如下图所示:

 

31)  缺少任一进程都表示出错。另外还需要在 Master 节点上通过命令 hdfs dfsadmin -report 查看 DataNode 是否正常启动,如果 Live datanodes 不为 0 ,则说明集群启动成功。例如我这边一共有2 个 Datanodes:


 

32)  通过web也能查看hadoop的工作状态,地址为

http://10.154.4.25:50090

 

33)  执行分布式实例,首先创建hdfs上的目录

hdfsdfs -mkdir -p /user/hadoop

 

34)  将 /usr/local/hadoop/etc/hadoop 中的配置文件作为输入文件复制到分布式文件系统中:

hdfs dfs -mkdir -pinput

hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input

 

35)  查看执行完毕以后的输出结果

./bin/hdfsdfs -cat output/*

结果如下:

 

36)  关闭 Hadoop 集群也是在 Master 节点上执行的:

stop-yarn.sh

stop-dfs.sh

mr-jobhistory-daemon.sh stop historyserver

实验结果如下:

到这里集群安装基本完成。

参考资料:

1、http://www.powerxing.com/install-hadoop-cluster/

2、http://www.powerxing.com/install-hadoop-in-centos/

3、hadoop&spark大数据开发实战


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值