Hadoop集群配置

                                          Hadoop集群搭建                                              

搭建Hadoop集群是进行大数据技术基础学习的第一步,所以,把自己搭建Hadoop集群的过程记录下来。

使用CentOS 7  64位,Hadoop2.7.7

使用的系统是Linux的CentOS7的系统版本,是在阿里镜像站(链接:https://opsx.alibaba.com/mirror)下载的。需要注意的是,用阿里的镜像,在安装好虚拟机系统后,要在root用户里执行以下三步操作。

1、mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup


2、wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
或者

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo



3、运行yum makecache生成缓存

可以在阿里镜像站, 点击centos那栏右边的帮助来获取这三步操作。

具体的虚拟机安装,在这里就不介绍了。

创建Hadoop用户,一般在第一次启动虚拟机的时候,就创建了Hadoop用户了。

登陆Hadoop用户后,通过su - 命令切换到root用户中。

执行   visudo

找到 root ALL=(ALL) ALL 这行,然后在这行下面增加一行内容:hadoop ALL=(ALL) ALL (当中的间隔为tab),如下图所示:

 保存并退出,vi的插入保存退出,就不用说了吧?!

切换到Hadoop用户中去,接下来要配置ssh的免密了。

首先检验系统上有没有ssh,执行 

rpm -qa | grep ssh

如果已经安装好ssh了,会有以下出现

 

若没有以上的信息出现,则需要安装ssh服务,执行以下两行代码(如果已经安装过ssh服务的可以跳过这一步)

sudo yum install openssh-clients
sudo yum install openssh-server

 接着登陆ssh查看是否安装成功。

ssh localhost

 此时会有如下提示(SSH首次登陆提示),输入 yes 。然后按提示输入密码 hadoop,这样就登陆到本机了。

测试SSH是否可用

接着执行

exit                           # 退出刚才的 ssh localhost
cd ~/.ssh/                     # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa              # 会有提示,都按回车就可以
cat id_rsa.pub >> authorized_keys  # 加入授权
chmod 600 ./authorized_keys    # 修改文件权限

 这样ssh的免密登陆就设置成功了。可以重复试一次ssh localhost,记得exit退出。

接下来,安装Java环境jdk。

sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel

 接着需要配置一下 JAVA_HOME 环境变量,为方便,我们在 ~/.bashrc 中进行设置

vim ~/.bashrc

 在文件最后面添加如下单独一行(指向 JDK 的安装位置),并保存:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk

 接着还需要让该环境变量生效,执行如下代码:

source ~/.bashrc

设置好后我们来检验一下是否设置正确:

echo $JAVA_HOME     # 检验变量值
java -version
$JAVA_HOME/bin/java -version  # 与直接执行 java -version 一样

 

 好了,接下来安装Hadoop。我选用的是Hadoop2.7.7是一个比较稳定的版本。

首先通过Xshell把hadoop-2.7.7.tar.gz,压缩包传到虚拟机里。通过Xshell连接虚拟机后,直接输入rz,选择文件,就可以完成上传了。连接的是Hadoop用户的话,文件直接被传送到/home/hadoop/目录下了。ls显示目录列表。

解压压缩包。执行

sudo tar -zxf ~/hadoop-2.7.7.tar.gz -C /usr/local    # 解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-2.7.7/ ./hadoop            # 将文件夹名改为hadoop
sudo chown -R hadoop:hadoop ./hadoop        # 修改文件权限

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

cd /usr/local/hadoop
./bin/hadoop version

 

明天再写关于集群配置的具体操作步骤吧!安装Hadoop集群的时候参考的是厦门大学大数据实验室的信息(链接:http://dblab.xmu.edu.cn/blog/install-hadoop-in-centos/)。 

 

设置IP映射

配置好一台的Hadoop后,在虚拟机选择克隆,将虚拟机克隆两份。要配置一个具有两个节点的Hadoop集群。

克隆完成后,首先咱们改变三台的主机名,便于辨识。执行

sudo vim /etc/hostname

 

把原来的主机名删除,第一台更名为Master,第二、三台命名为Slave1、Slave2。重启后,就可以看到更改的主机名了。

接下来,我们设置三台机子的IP映射。在每一台执行

ifconfig                           #查看此虚拟机的ip

 

查看IP,或者在虚拟机桌面的右上角,点击 应用程序——系统工具——设置——网络设置 ,点击“优先连接”右下边那个齿轮状的图标,也可以查看IP。

 

然后执行

sudo vim /etc/hosts

 

在最下边,输入三台的IP还有主机名,IP与主机名之间的Tab键。在Slave1、2上边也要执行。

 配置好后需要在各个节点上执行如下命令,测试是否相互 ping 得通,如果 ping 不通,后面就无法顺利配置成功:

ping Master -c 3   # 只ping 3次,否则要按 Ctrl+c 中断
ping Slave1 -c 3
ping Slave2 -c 3

例如,我连接Master,如果能成功,就是下边的样子

 

继续下一步配置前,请先完成所有节点的网络配置,修改过主机名的话需重启才能生效

 SSH无密码登陆节点

 这个操作是要让 Master 节点可以无密码 SSH 登陆到各个 Slave 节点上。首先生成 Master 节点的公匙,在 Master 节点的终端中执行(因为改过主机名,所以还需要删掉原有的再重新生成一次):

cd ~/.ssh               # 如果没有该目录,先执行一次ssh localhost
rm ./id_rsa*            # 删除之前生成的公匙(如果有)
ssh-keygen -t rsa       # 一直按回车就可以

让 Master 节点需能无密码 SSH 本机,在 Master 节点上执行:

cat ./id_rsa.pub >> ./authorized_keys

完成后可执行 ssh Master 验证一下(可能需要输入 yes,成功后执行 exit 返回原来的终端)。接着在 Master 节点将上公匙传输到 Slave1 节点(有多的节点,也需要上传的别的节点上):

scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/

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

 

 接着在 Slave1 节点上,将 ssh 公匙加入授权:

mkdir ~/.ssh       # 如果不存在该文件夹需先创建,若已存在则忽略
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub    # 用完就可以删掉了

在Slave2节点上,也进行相同的操作。

这样,在 Master 节点上就可以无密码 SSH 到各个 Slave 节点了,可在 Master 节点上执行如下命令进行检验,如下图所示: 

 

配置PATH变量 

将 Hadoop 安装目录加入 PATH 变量中,这样就可以在任意目录中直接使用 hadoo、hdfs 等命令了,需要在 Master 节点上进行配置。首先执行

vim ~/.bashrc

加入一行: 

export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin

如下图所示:

 

 保存后执行 source ~/.bashrc 使配置生效。在后边的相关程序的安装过程中,要多次配置环境变量,所以能记住vim ~/.bashrc和source ~/.bashrc还是比较方便的。

配置集群/分布式环境

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

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

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

2, 文件 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>Abase for other temporary directories.</description>
        </property>
</configuration>

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

<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>Master:50090</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>2</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>

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

修改文件名执行

mv mapred-site.xml.template mapred-site.xml
<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>

5, 文件 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>

配置好后,将 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

在 Slave1 、Slave2节点上分别执行下边的几条命令:

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

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

hdfs namenode -format       # 首次运行需要执行初始化,之后不需要

关闭CentOS防火墙:

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

因为,咱们使用的是CentOS7系统,需要执行:

systemctl stop firewalld.service    # 关闭firewall
systemctl disable firewalld.service # 禁止firewall开机启动

这时会出现,需要认证的提示,需要输入用户的密码就行了。

 

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

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

或者执行

start-all.sh
mr-jobhistory-daemon.sh start historyserver

都是可以开启Hadoop集群的,需要注意的是,开启Hadoop集群的时候,所有的节点都要处于开机状态。

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

 

缺少任一进程都表示出错。这里,会出现IP变更,导致Hadoop集群启动不成功的问题,这就需要查看IP与/etc/hosts 里的IP映射是否一致,若不一致,更改为一致就可以了。

也可以通过 Web 页面看到查看 DataNode 和 NameNode 的状态:http://master:50070/。如果不成功,可以通过启动日志排查原因。

 至此,Hadoop集群的搭建,就是全部完成了!

执行分布式实例

请参考厦门大学大数据实验室博客,链接:http://dblab.xmu.edu.cn/blog/install-hadoop-cluster/,在这一页的后半部分,是关于“执行分布式实例”的演示,按照做,都能做出来。关于Hadoop集群的搭建,我第一次也是参考的这里(http://dblab.xmu.edu.cn/blog/install-hadoop-cluster/)。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值