hadoop 集群搭建(详细)

                                   hadoop 集群搭建

一 、 前提准备

安装 jdk8,配置环境变量 在 /etc/profile 中 或者 ~/.bash_profile 中都可以

export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
export HADOOP_HOME=/opt/hadoop-2.6.0-cdh5.7.0
export JRE_HOME=${JAVA_HOME}/jre
export MVN_HOME=/usr/apache-maven-3.6.0
export PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${MVN_HOME}/bin:$PATH
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:/opt/so/jna-4.5.1.jar

http://archive.cloudera.com/cdh5/cdh/5/  在这里下载  hadoop-2.6.0-cdh5.7.0.tar.gz 压缩包

必须安装ssh并且必须运行sshd才能使用管理远程Hadoop守护程序的Hadoop脚本(如果要使用可选的启动和停止脚本)。此外,建议还安装pdsh以便更好地进行ssh资源管理。

安装ssh 可查看这篇博客 https://www.cnblogs.com/kaid/p/7985568.html

将hadoop-2.6.0-cdh5.7.0.tar.gz  放到 /opt 目录下并 tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz命令进行解压

二、hadoop本地模式搭建

(1)配置 /opt/hadoop-2.6.0-cdh5.7.0/etc/hadoop/hadoop_env.sh 的 java_home

# The java implementation to use.
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64

(2)默认情况下,Hadoop配置为以非分布式模式运行,作为单个Java进程。这对调试很有用。

以下示例复制解压缩的conf目录以用作输入,然后查找并显示给定正则表达式的每个匹配项。输出将写入给定的输出目录。

  $ mkdir input
  $ cp  /opt/hadoop-2.6.0-cdh5.7.0/etc/hadoop*.xml  input
  $ ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jar grep input output'dfs [az。] +'
  $ cat output/*
./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar pi 2 3

三 、 hadoop 伪分布式搭建

(1)配置 /opt/hadoop-2.6.0-cdh5.7.0/etc/hadoop/hadoop_env.sh 的 java_home

# The java implementation to use.
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64

(2)配置 core-site.xml

  <property>
        <name>fs.defaultFS</name>
        <value>hdfs://192.168.42.85:8020</value>
    </property>
    <property>
      <name>hadoop.tmp.dir</name>
      <value>/home/hadoop/app/tmp</value>
    </property>

 (3)配置hdfs-site.xml  

只有一个节点,就是自己,所以副本数配置为1

    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>

(4)配置yarn-site.xml

    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

(5)配置 mapred -site.xml

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

(6)检查您是否可以在没有密码的情况下ssh到localhost

ssh localhost

如果在没有输入密码不能 ssh到localhost的情况下请执行如下命令: 

  $ ssh-keygen -t rsa -P'' -  f~ / .ssh / id_rsa
  $ cat~ / .ssh / id_rsa.pub >>〜/ .ssh / authorized_keys
  $ chmod 0600~ / .ssh / authorized_keys

(7)启动hadoop,访问 http://192.168.42.85:50070   hdfs web 页面 和 http://192.168.42.85:8088 和 yarn web 页面 

./bin/hdfs namenode -format
./sbin/start-dfs.sh
./sbin/start-yarn.sh

或者可以使用
./sbin/start-all.sh 相当于 (./sbin/start-dfs.sh 和 ./sbin/start-yarn.sh两个命令)

四、hadoop 全分布式集群搭建

准备三台机器,你可以 创建 一个hadoop 用户 用来区分 root 用户

执行 hostname 命令查看当前主机名 localhost.localdomain

(1)分别修改三台机器的hostname 和 hosts

执行 hostname 命令查看当前主机名 localhost.localdomain

机器1:hostname 设置 :

vim /etc/hostname

hadoop000

vim /etc/sysconfig/network
NETWORKING=YES
HOSTNAME=hadoop000

 vim  /etc/hosts ,将localhost.localdomain 替换为 要设置的主机名
192.168.42.85 hadoop000 
192.168.42.71 hadoop001 
192.168.42.70 hadoop002 

机器2:

vim /etc/hostname

hadoop001

vim /etc/sysconfig/network
NETWORKING=YES
HOSTNAME=hadoop001

 vim  /etc/hosts ,将localhost.localdomain 替换为 要设置的主机名
192.168.42.85 hadoop000 
192.168.42.71 hadoop001 
192.168.42.70 hadoop002

机器3:

vim /etc/hostname

hadoop002

vim /etc/sysconfig/network
NETWORKING=YES
HOSTNAME=hadoop002

 vim  /etc/hosts ,将localhost.localdomain 替换为 要设置的主机名
192.168.42.85 hadoop000 
192.168.42.71 hadoop001 
192.168.42.70 hadoop002 

(2)ssh 免密码登录

  $ ssh-keygen -t rsa -P'' -  f~ / .ssh / id_rsa
  $ cat~ / .ssh / id_rsa.pub >>〜/ .ssh / authorized_keys
  $ chmod 0600~ / .ssh / authorized_keys

尝试 执行

ssh hadoop000
ssh hadoop001
ssh hadoop002​

(3)以hadoop000 机器 为例 进行配置

  • 配置 /opt/hadoop-2.6.0-cdh5.7.0/etc/hadoop/hadoop_env.sh 的 java_home
# The java implementation to use.
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
  • 配置 core-site.xml
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop000:8020</value>
    </property>
    <property>
      <name>hadoop.tmp.dir</name>
      <value>/home/hadoop/app/tmp</value>
    </property>
  • 配置hdfs-site.xml
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>

    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/home/hadoop/app/tmp/dfs/name</value>
    </property>

    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/home/hadoop/app/tmp/dfs/data</value>
    </property>
  • 配置yarn-site.xml 
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
  
  <property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
  </property>

    //告诉resourceManager 跑在那个机器上
   <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop000</value>
   </property>
  •  配置mapred -site.xml
 <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
  </property>

 <property>
      <name>mapreduce.jobhistory.address</name>
      <value>hadoop000:10020</value>
  </property>


 <property>
      <name>mapreduce.jobhistory.webapp.address</name>
      <value>hadoop000:19888</value>
  </property>

 <property>
      <name>mapreduce.jobhistory.intermediate-done-dir</name>
      <value>/history/done_intermediate</value>
  </property>

 <property>
      <name>mapreduce.jobhistory.done-dir</name>
      <value>/history/done</value>
  </property>
修改 从节点配置  vim slaves
hadoop000
hadoop001
hadoop002

(4)hadoop000机器配置好 了之后,直接将hadoop 分发到 另外两台机器上

分发公钥到集群中的其他机器上面
ssh-copy-id -i ~/.ssh/id_rsa.pub  hadoop000
ssh-copy-id -i ~/.ssh/id_rsa.pub  hadoop001
ssh-copy-id -i ~/.ssh/id_rsa.pub  hadoop002
分发hadoop安装包到  hadoop001 和 hadoop2 节点上
scp -r  /opt/hadoop-2.6.0-cdh5.7.0  root@hadoop001: /opt/
scp -r  /opt/hadoop-2.6.0-cdh5.7.0  root@hadoop002: /opt/
分发环境变量配置文件到 hadoop001 和 hadoop002 节点上
scp ~/.bash_profile  root@hadoop001:~/
scp ~/.bash_profile  root@hadoop002:~/

(5)启动hadoop集群

只需要在 hadoop000上面启动即可

hdfs namenode -format
./sbin/start-all.sh

如果启动namenode 或者 datanode 启动失败,可以查看日志找到报错原因 或者 删除 配置在hdfs-site.xml
中的namenode 和datanode 的目录
cd  /home/hadoop/app/tmp
rm -rf   dfs
cd $HADOOP_HOME
#重新启动 
hdfs namenode -format
./sbin/start-all.sh

#停止hadoop集群
./sbin/stop-all.sh

(6)开发 hadoop demo项目 查看码云 地址 https://gitee.com/dzxmy/hadoop-train

(7)更详细的集群搭建请参考 https://blog.csdn.net/hliq5399/article/details/78193113#commentBox 

和   https://www.cnblogs.com/smartloli/p/4298430.html

(8)哥不是小萝莉 大数据 系列教程博客 https://www.cnblogs.com/smartloli/category/649544.html

 

猜你喜欢

转载自blog.csdn.net/qq_31905135/article/details/84869333