Hadoop集群安装

Hadoop集群安装

安装环境

OS
CentOS 6.5 (cat /etc/issue查看)

IP

ip hostname 定位(新hostname)
ip1 vm1 Master
ip2 vm2 Slave1
ip3 vm2 Slave2

用户
建议新建hadoop用户

$ sudo useradd -m hadoop -s /bin/bash  # 建立新用户,设置用户默认shell
$ sudo passwd hadoop # 设置密码
$ su hadoop  # 切换用户

防火墙
需要关闭防火墙

大致步骤

  1. 划分Master和slave
  2. 配置ssh免密登录
  3. 配置Master的JAVA环境,安装Hadoop
  4. 配置Slave的JAVA环境,安装Hadoop
  5. 启动,测试

主从划分

  1. 为了便于区分,可以选择修改hostname(/etc/sysconfig/network CentOS)
  2. 按照上述表格选择修改/etc/hosts(节点映射关系),此时 ping ip1ping Master效果相同

PS:

  1. hostname(uname -a) 查看主机名
  2. hostname重启后才可生效

配置ssh免秘钥登录

目的是为了免去每次ssh登录都要输入密码的麻烦,原理是公钥加密。

  1. Master/Slave1/Slave2分别生成公钥
cd ~/.ssh               # 若没有该目录,可执行ssh localhost
rm ./id_rsa*            # 删除旧的公匙
ssh-keygen -t rsa       # 生成新公钥
  1. 保存公钥
cat ./id_rsa.pub >> ./authorized_keys

此时可免密登录localhost
3. 将Slave1和Slave2密钥存入Master主机,并加入到主机授权文件中

scp ~/.ssh/id_dsa.pub hadoop@master:/home/hadoop/.ssh/id_dsa.pub.slave01
scp ~/.ssh/id_dsa.pub hadoop@master:/home/hadoop/.ssh/id_dsa.pub.slave02

cat id_dsa.pub.slave01 >> authorized_keys
cat id_dsa.pub.slave02 >> authorized_keys
  1. 将Master授权文件拷入Slave中,实现互通
scp authorized_keys hadoop@slave1:/home/hadoop/.ssh/authorized_keys
scp authorized_keys hadoop@slave2:/home/hadoop/.ssh/authorized_keys

配置JDK

安装JDK( 可选Oracle 的 JDK,或是 OpenJDK),详细可参见链接

主要有命令行和压缩包两种方法(需要注意JDK版本与Hadoop版本,最新版Hadoop(3.0.0)需要安装JAVA8(参考)),步骤如下:

  1. 命令行安装(CentOS```sudo yum install java-1.7.0-openjdk-devel
2. 配置以下环境变量(路劲按实际情况填写),``` vi .bashrc```

Java Env

JAVA_HOME=/usr/java/jdk1.7.0_79
JRE_HOME=/usr/java/jdk1.7.0_79/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

```source .bash_profile```使之生效
3. 使用```java -version```验证是否安装成功

#### 安装Hadoop

过程和装JDK差不多,都是下载,解压,然后配置变量。

export HADOOP_INSTALL=/usr/local/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"


```source .bashrc```使配置生效,使用```hadoop```来验证是否安装成功

#### 配置

正常启动集群需要修改```/hadoop/etc/hadoop```中的几个文件,slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml。

1. slaves
 DataNode 的主机名写入该文件,每行一个
 2. core-site.xml

fs.defaultFS hdfs://master:9000 hadoop.tmp.dir /opt/hadoop-2.6.4/tmp <configuration> <property> <name>dfs.replication</name> <value>3</value> </property> </configuration>
  1. mapred-site.xml
 <configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
  1. yarn-site.xml
 <configuration>

<!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
</configuration>

PS:配置好后,将这些文件复制到slave机器。

启动

首次启动在Master节点执行NameNode的格式化:
hdfs namenode -format # 首次运行需要执行初始化,之后不需要

启动集群

start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver

使用jps命令查看节点启动的进程,Master和slave上均可使用。

使用hdfs dfsadmin -report可以查看Datanode是否成功启动

启动后问题

  1. 浏览器访问9000端口被拒绝
    原因,没有格式化hdfs(注意:本身9000端口也不可以通过浏览器访问,否则会出现问题2)
    https://stackoverflow.com/questions/18322102/hadoop-connection-refused-on-port-9000

  2. It looks like you are making an HTTP request to a Hadoop IPC port. This is not the correct port for the web interface on this daemon.
    https://stackoverflow.com/questions/20216614/hadoop-2-2-0-it-looks-like-you-are-making-an-http-request-to-a-hadoop-ipc-port

  3. 浏览器默认端口
    Resource Manager: http://hadoop1:8088
    Web UI of the NameNode daemon: http://hadoop1:50070
    HDFS NameNode web interface: http://hadoop1:8042

参考:

  1. http://www.powerxing.com/install-hadoop-cluster/ (很详细,推荐看这个)

PS:
另外,可以通过Cloudera来安装,等尝试后会记录一下,有兴趣的同学可以先搜一下

PPS:
二维码仅做测试用,看不过去的轻(绕)喷(行)

posted @ 2017-07-13 13:59  wswang  阅读(1591)  评论(0编辑  收藏  举报