Hadoop集群环境搭建(云服务器,虚拟机都适用)

首先要说明:这里采用了阿里云,腾讯云服务器来搭建集群。当然,在vm中开多台虚拟机来实现集群环境搭建,此教程也同样适用。下面切入正题:

1.vmware虚拟机的安装(云服务器搭建忽略此点)

这里就自行选择一个版本的vmware,来进行安装操作。我这里选择的是:VMware® Workstation 14 Pro

2.linux安装(云服务器搭建忽略此点)

关于linux的具体的安装教程可另行搜索,这里提几点建议:
- 建议安装没有图形界面的linux,比如ubuntu server,体积小,占内存少,毕竟搞hadoop也用不到什么图形界面。 我这里选择的是:ubuntu-18.04.2-live-server-amd64
- 安装的时候一般会先创建一个普通用户,用此用户登录。登陆后,输入:sudo passwd root ,就可以进行root用户密码的设置
- dpkg-reconfigure console-setup 用来设置终端的字体格式

3.ssh配置链接

主从主机之间进行通信、对各个主机的统一控制,都需要配置ssh服务。

  1. 在linux上开启ssh服务
    • apt-get install openssh-server 安装ssh组件
    • 这个教程涉及的hadoop集群,默认都是在root用户下进行操作。但ubuntu下默认不允许用ssh登录root用户,故需要进行配置:
      • vim /etc/ssh/sshd_config
      • PermitRootLogin yes 找到该行,做如此修改
    • /etc/init.d/ssh start 启动ssh服务
    • ps -e | grep ssh 查看ssh服务进程是否正常启动
  2. (vm虚拟机搭建注意此点)如果每次打开vm中的虚拟机,ip发生变更,那就要进行相应配置变更,为了避免麻烦,故这里:
    • 将虚拟机关闭,并在vm中点击:编辑->虚拟网络编辑器->VMnet8更改为NAT模式
    • 进入/etc/netplan/50-cloud-init.yaml,做如下修改
       network:
       ethernets:
       ens33:
           addresses: [192.168.226.130/24] #要定义的IP地址
           dhcp4: false  #设为false,取消自动获取IP
           gateway4: 192.168.226.2  #网关地址
           nameservers: #DNS地址,可设置多个
                   addresses: [8.8.8.8, 4.4.4.4]
       version: 2
      
    • 让配置生效netplan apply
  3. 在windows上使用ssh客户端工具
    • 这里我用了secureCRT,他有一个优点:可以直接用其提供的ftp,从windows向虚拟机传输文件
    • Xshell也非常不错,要传文件需下载Xftp。Tips:这里可以选择教育用户安装,提供一个邮箱即可,可以免费试用这两款软件,很不错。

4.JDK安装与配置

  1. jdk压缩包
    • 可通过windows去Oracle下载好,再利用ftp传到各个节点
    • 也可在节点的终端里下载(若不能下载,请去官网复制,更换download.oracle.com/......部分URL):
      wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz
      
  2. 将jdk压缩包解压到指定目录:tar xzvf xxxname -C /usr/local
  3. 为了方便,进入/usr/local给jdk1.8.0_73 改名:mv jdk1.8.0_73 jdk
  4. 修改配置环境变量:vim /etc/profile 打开后,在文件最下面添加,然后ESC :wq退出编辑:
    export JAVA_HOME=/usr/local/jdk
    export PATH=$PATH:$JAVA_HOME/bin:
    export CLASS_PATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    
  5. source /etc/profile 让配置生效,输入java -version看是否成功

5.Hadoop的下载安装

  1. 直接终端下载:
    wget http://mirrors.shu.edu.cn/apache/hadoop/common/hadoop-2.8.4/hadoop-2.8.4.tar.gz
    
  2. 若到 www.apache.org 上下载hadoop,记得,是binary的那一个版本
  3. 将压缩包解压到/usr/local目录
  4. 改名字 mv hadoop-2.7.2 hadoop
  5. 进行环境变量配置:vim /etc/profile
     export JAVA_HOME=/usr/local/jdk
     export HADOOP_HOME=/usr/local/hadoop
     export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:
     export CLASS_PATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    
  6. source /etc/profile 让配置生效

6.Hadoop配置

  1. 为了配置方便,为每台电脑配置一个主机名:
    • vim /etc/hostname
    • 各个节点中,主节点写入:master , 其他从节点写入:slavexx
    • 如果这样修改不能生效,则继续如下操作
    • vim /etc/cloud/cloud.cfgpreserve_hostname: true 修改
    • reboot重启,这时应该就修改过来了
  2. 主机名称与ip的绑定:(云服务器配置这里有大坑
    • vim /etc/hosts 按如下格式添加信息
      本机ip 本机hostname
      其他节点xx的ip 其他节点xx的hostname
    • 需要注意的是,如果是云服务器搭建,一般买来的服务器会提供一个内网ip,一个公网ip,这里配置时,其他节点ip是公网ip,本机ip是ifconfig得到的内网ip
  3. 上面配置生效可能要reboot重启
  4. 设置ssh免登录处理,也就是master节点无密码登录各个slave节点:
    • 进入root根目cd ~,查看是否有.ssh的配置文件la,有就要先删除: rm -rf ~/.ssh
    • 在master的节点上生成ssh key: ssh-keygen -t rsa 一路回车
    • 将公钥信息保存到另一个文件:
      cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
      
    • 将此主节点上的id_rsa.pub文件,追加到各个slave节点的cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys目录中去
    • 免登录测试:ssh ip地址 ,不用输密码即可进入就是成功了,退出可以用exit
  5. /usr/local/hadoop 中创建如下目录, 如果hadoop出问题,需要重新配置时,这些文件记得彻底删除再重新创建
    mkdir hdfs hdfs/tmp hdfs/data hdfs/name
    
  6. 进入 cd /usr/local/hadoop/etc/hadoop ,准备对如下几个文件进行配置:
  7. 配置core-site.xml文件,在configuration标签中添加如下代码,注意hadoop.tmp.dir的value目录与刚刚创建的tmp目录要一致
    <property>
    	<name>hadoop.tmp.dirname>
    	<value>file:/usr/local/hadoop/hdfs/tmpvalue>
    	<description>A base for other temporary directories.description>
    property>
    <property>
    	<name>io.file.buffer.sizename>
    	<value>131072value>
    property>
    <property>
    	<name>fs.defaultFSname>
    	<value>hdfs://master:9000value>
    property>
    
  8. 配置 hadoop-env.sh文件,关联hadoop使用的语言,就是jdk
    # The java implementation to use.
    export JAVA_HOME=/usr/local/jdk
    
  9. 配置 yarn-env.sh文件
    # some Java parameters
    export JAVA_HOME=/usr/local/jdk
    
  10. 配置hdfs-site.xml,在configuration标签中添加如下代码。注意其中dfs.namenode.name.dir和dfs.datanode.data.dir的value和之前创建的/hdfs/name和/hdfs/data路径一致;因为我只有一个从节点slave1,所以dfs.replication设置为1
    <property>
    	<name>dfs.replicationname>
    	<value>1value>   这里你有几个salve节点,就设置为数字几
    property>
    <property>
    	<name>dfs.namenode.name.dirname>
    	<value>file:/usr/local/hadoop/hdfs/namevalue>
    	<final>truefinal>
    property>
    <property>
    	<name>dfs.datanode.data.dirname>
    	<value>file:/usr/local/hadoop/hdfs/datavalue>
    	<final>truefinal>
    property>
    <property>
    	<name>dfs.namenode.secondary.http-addressname>
    	<value>master:9001value>
    property>
    <property>
    	<name>dfs.webhdfs.enabledname>
    	<value>truevalue>
    property>
    <property>
    	<name>dfs.permissionsname>
    	<value>truevalue>
    property>
    
  11. 复制mapred-site.xml.template模板文件:cp mapred-site.xml.template mapred-site.xml ,然后在configuration标签中添加如下代码:
    <property>
    	<name>mapreduce.framework.namename>
    	<value>yarnvalue>
    property>
    
  12. 配置yarn-site.xml,在configuration标签中添加如下代码:
    <property>
    	<name>yarn.resourcemanager.addressname>
    	<value>master:18040value>
    property>
    <property>
    	<name>yarn.resourcemanager.scheduler.addressname>
    	<value>master:18030value>
    property>
    <property>
    	<name>yarn.resourcemanager.webapp.addressname>
    	<value>master:18088value>
    property>
    <property>
    	<name>yarn.resourcemanager.resource-tracker.addressname>
    	<value>master:18025value>
    property>
    <property>
    	<name>yarn.resourcemanager.admin.addressname>
    	<value>master:18141value>
    property>
    <property>
    	<name>yarn.nodemanager.aux-servicesname>
    	<value>mapreduce_shufflevalue>
    property>
    <property>
    	<name>yarn.nodemanager.auxservices.mapreduce.shuffle.classname>
    	<value>org.apache.hadoop.mapred.ShuffleHandlervalue>
    property>
    
  13. 配置slaves 文件:vim slaves 添加所有从节点的hostname,然后保存退出
  14. 配置masters文件:vim masters 添加主节点的hostname,然后保存退出
  15. 要确保所有节点的防火墙已经关闭,以防出现一下错误:(云服务器配置这里有大坑
    • could only be replicated to 0 nodes instead of minReplication (=1). There are …
    • ubuntu中的防火墙是ufw防火墙:状态查看:ufw status 开启:ufw enable 关闭:ufw disable
    • 需要注意的是,如果是云服务器搭建,有的云服务平台会默认开启一些端口的防火墙,比如阿里云的服务器就默认开启了三个端口的防火墙,此时要想在不同节点之间成功传输数据,就要:1,把ubuntu里的防火墙关了 2,把阿里云服务器上提供的防火墙端口全部打开。
  16. 各个节点都要进行如上配置
  17. 在master节点格式化系统: hdfs namenode -format
  18. 启动hadoop:start-all.sh
  19. 终端输入:jps 命令,若主节点出现如下进程:
    5664 SecondaryNameNode
    14392 Jps
    5821 ResourceManager
    5439 NameNode
    
    从节点出现如下进程:
    21557 NodeManager
    21432 DataNode
    24558 Jps
    
    则说明配置成功
  20. 接下来可以试着编写一个hadoop界的“hello world”程序:wordcount,来测试一下配置好的集群了。

你可能感兴趣的:(Hadoop集群环境搭建(云服务器,虚拟机都适用))