hadoop集群搭建

写在前面:

本例中的演示均为非 root 权限,所以有些命令行需要加 sudo,如果你是 root 身份运行,请忽略 sudo。

软件环境:

  • Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic x86_64)
  • Hadoop: 2.6.0
  • Jdk1.8.0_74

布局:

IP 主机名 用户名
192.168.30.130 master hadoop
192.168.30.131 slave1 hadoop
192.168.30.132 slave2 hadoop

具体配置:

(1)修改主机名

我们将搭建1个master,2个slave的集群方案。首先修改主机名vi/etc/hostname在master上修改为master,其中一个slave上修改为slave1,另一个同理。

(2)配置hosts

每台主机上修改host文件(注意是每台机子)

vi /etc/hosts
192.168.30.130      master
192.168.30.131      slave1
192.168.30.132      slave2

配置之后ping一下用户名看是否生效

ping master
ping slave1
ping slave2

(3)关闭所有节点的防火墙

$ sudo ufw disable
Alt text

(4)SSH 免密码登录

其实就是一种RSA算法,将彼此的公钥放在要访问的电脑上,自己保存私钥,保存好不用再进行输入密码验证。说通俗一点就是将本电脑的信息和密码已经保存到要访问的电脑上,直接访问即可。
安装Openssh server

sudo apt-get install openssh-server

所有机器上都生成私钥和公钥(注意是每台机子)

ssh-keygen -t rsa #一路回车

hadoop集群搭建_第1张图片
在~目录下

~$ ls -a       # 多了.ssh目录
~$ cd .ssh     #进入.ssh目录
~$ ls          #查看 

在这个目录里会生成id_rsa和id_rsa.pub及know_hosts三个文件,如图:
Alt text

需要让机器间都能相互访问,就把每个从节点机子上的id_rsa.pub发给master节点,传输公钥可以用scp来传输。

scp ~/.ssh/id_rsa.pub hadoop@master:~/.ssh/id_rsa.pub.slave1

在master上,将所有公钥加到用于认证的公钥文件authorized_keys中

cat ~/.ssh/id_rsa.pub* >> ~/.ssh/authorized_keys

将公钥文件authorized_keys分发给每台slave

scp ~/.ssh/authorized_keys hadoop@slave1:~/.ssh/

hadoop@master:~$ scp ~/.ssh/authorized_keys hadoop@slave1:~/.ssh/
The authenticity of host 'slave1 (192.168.30.132)' can't be established. ECDSA key fingerprint is 24:00:02:d9:67:08:e8:92:ee:60:71:4e:4a:70:e9:58. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'slave1' (ECDSA) to the list of known hosts. hadoop@slave1's password: 
authorized_keys                                       100% 4343     4.2KB/s   00:00

在每台机子上验证SSH无密码通信

ssh master
ssh slave1
ssh slave2

如果登陆测试不成功,则可能需要修改文件authorized_keys的权限

chmod 600 ~/.ssh/authorized_keys

(5)安装 Java环境(同样操作需要在所有节点上执行)

hadoop是用Java语言开发的分布式计算框架,所以集群中的每个节点需要安装JDK

首先把下载的jdk文件放到/usr/local目录下创建的java文件夹

~$ sudo mkdir /usr/local/java
tar -zxvf jdk-8u74-linux-x64.tar.gz

修改环境变量sudo vi /etc/profile,添加下列内容:

export JAVA_HOME=/usr/local/java/jdk1.8.0_74
export JRE_HOME=/usr/local/java/jdk1.8.0_74/jre
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

然后使环境变量生效,并验证 Java 是否安装成功

$ source /etc/profile   #生效环境变量
$ java -version         #如果打印出如下版本信息,则说明安装成功
java version "1.8.0_74"
Java(TM) SE Runtime Environment (build 1.8.0_74-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode)

(6) 安装hadoop

下载hadoop-2.6.0.tar.gz到master节点的桌面上

$ sudo scp hadoop-2.2.0.tar.gz /usr/local     #将其复制到/usr/local
/usr/local$ sudo tar -zxvf hadoop-2.2.0.tar.gz        #解压
/usr/local$ sudo mv hadoop-2.2.0 hadoop    # 将解压生成的文件重命名为hadoop
/usr/local$ sudo chown -R hadoop:hadoop hadoop      #将hadoop文件夹的权限赋予hadoop用户

(7)配置 Hadoop

cd /usr/local/hadoop/etc/hadoop进入hadoop配置目录,需要配置有以下7个文件:hadoop-env.sh,yarn-env.sh,slaves,core-site.xml,hdfs-site.xml,maprd-site.xml,yarn-site.xml

1、在hadoop-env.sh中配置JAVA_HOME

#The java implementation to use.
export JAVA_HOME=/usr/local/java/jdk1.8.0_74

2、在yarn-env.sh中配置JAVA_HOME

#some Java parameters
export JAVA_HOME=/usr/local/java/jdk1.8.0_74

3、在slaves中配置slave节点的ip或者host,

slave1
slave2

4、修改core-site.xml

<configuration>
    <!-- 指定HDFS老大(namenode)的通信地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000/</value>
    </property>
    <!-- 指定hadoop运行时产生文件的存储路径 -->
    <property>
         <name>hadoop.tmp.dir</name>
         <value>file:/usr/local/hadoop/tmp</value>
    </property>
</configuration>

5、修改hdfs-site.xml

<configuration>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>master:9001</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>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
</configuration>

6、修改mapred-site.xml (可能需要先重命名,默认文件名为 mapred-site.xml.template)

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>

</configuration>

7、修改yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>master:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>master:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>master:8035</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>master:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>master:8088</value>
    </property>
</configuration>

将配置好的hadoop-2.6.0文件夹分发给所有slaves吧
在 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

在 Slave1 节点上执行:

sudo rm -r /usr/local/hadoop    # 删掉旧的(如果存在)
sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
sudo chown -R hadoop /usr/local/hadoop

修改/etc/environment文件
各节点上操作:

~$ vim /etc/environment

加入JAVA_HOME和JAVA_INSTALL路径,并在PATH路径中添加“:/usr/local/hadoop/bin:/usr/local/hadoop/sbin”


JAVA_HOME=/usr/local/java/jdk1.8.0_74
JAVA_INSTALL=/usr/local/hadoop
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/hadoop/bin:/usr/local/hadoop/sbin"
~

(8)启动 Hadoop

在 master 上执行以下操作,就可以启动 hadoop 了。

cd ~ /usr/local/hadoop
bin/hadoop namenode -format     #格式化namenode
sbin/start-dfs.sh               #启动dfs 
sbin/start-yarn.sh              #启动yarn

hadoop集群搭建_第2张图片

(9) 、验证 Hadoop 是否安装成功

可以通过jps命令查看各个节点启动的进程是否正常。在 master 上应该有以下几个进程:

$ jps  #run on master
3407 SecondaryNameNode
3218 NameNode
3552 ResourceManager
3910 Jps

在每个slave上应该有以下几个进程:

$ jps   #run on slaves
2072 NodeManager
2213 Jps
1962 DataNode

或者在浏览器中输入 http://master:8088 ,应该有 hadoop 的管理界面出来了,并能看到 slave1 和 slave2 节点
注:在这个文件中添加linux主机名和IP的映射关系

C:\Windows\System32\drivers\etc\hosts
192.168.30.130       master

你可能感兴趣的:(jdk,hadoop,ubuntu,HADOOP集群)