HADOOP集群搭建

一、配置服务器

      1个主节点:master(192.168.100.31)

      2个(从)子节点:slaver1(192.168.100.32),slaver2(192.168.100.33)

      配置主节点(192.168.100.31):

vi /etc/sysconfig/network

     添加内容(如果有则不用添加):

NETWORKING=yes

HOSTNAME=master

    配置两台子节点名(192.168.100.32)和(192.168.100.33)(如果有则不用添加):

    (192.168.100.32)  

vi /etc/sysconfig/network

    添加内容:

NETWORKING=yes

HOSTNAME=slaver1

    (192.168.100.33)   

vi /etc/sysconfig/network

    添加内容:

NETWORKING=yes

HOSTNAME=slaver2

二、配置hosts

    打开主节点的hosts文件,要将文件的前两行注释掉 (注释当前主机的信息)并在文件中添加所有hadoop集群的主机信息

vi  /etc/hosts

192.168.100.31   master

192.168.100.32   slaver1

192.168.100.33   slaver2

    保存之后,将主节点的hosts分别拷贝到其他两个子节点

scp /etc/hosts root@192.168.100.32:/etc/

scp /etc/hosts root@192.168.100.33:/etc/

    然后分别执行(重启服务器也可以不执行下面的语句): /bin/hostsname hostsname

    例如:master上执行 /bin/hostname master,使之生效 

hadoop替换主节点 配置hadoop集群主节点_xml


三、配置ssh无密码访问生成公钥密钥对在每个节点上分别执行:

ssh-keygen -t rsa

      一直按回车直到生成结束

      执行结束之后每个节点上的/root/.ssh/目录下生成了两个文件  id_rsa  和 id_rsa.pub。其中前者为私钥,后者为公钥。

    

   在主节点上执行:

cp id_rsa.pub authorized_keys将子节点的公钥拷贝到主节点并添加进authorized_keys

     将两个子节点的公钥拷贝到主节点上,分别在两个子节点上执行:   

scp ~/.ssh/id_rsa.pub root@master:~/.ssh/id_rsa_slaver1.pub(目录)

 scp ~/.ssh/id_rsa.pub root@master:~/.ssh/id_rsa_slaver2.pub(目录)

     然后在主节点上,将拷贝过来的两个公钥合并到authorized_keys文件中去

主节点上执行:    

cat id_rsa_slaver1.pub>> authorized_keys

cat id_rsa_slaver2.pub>> authorized_keys

四、验证配置是否成功

       在master上分别执行    

ssh slaver1

ssh slaver2

     能正确跳转到两台子节点的操作界面即可,同样在每个子节点通过相同的方式登录主节点和其他子节点也能无密码正常登录就表示配置成功。 

     将主节点的authorized_keys文件分别替换子节点的authorized_keys文件

     主节点上用scp命令将authorized_keys文件拷贝到子节点的相应位置

scp authorized_keys root@slaver1:/root/.ssh/

scp authorized_keys root@slaver2:/root/.ssh/

     执行完之后再次运行ssh命令实现无密码访问(至此无密访问结束)

五、安装JDK(上传压缩包并进行解压)  

jdk-8u141-linux-x64.tar.gz

      解压:   

tar -zxvf /opt/fi_client/JDK/jdk-8u141-linux-x64.tar.gz

六、配置环境变量并生效

vi /etc/profile

     在profile文件末尾添加以下代码:

export JAVA_HOME=/opt/fi_client/JDK/jdk1.8.0_141

export JRE_HOME=$JAVA_HOME/jre

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib

    文件生效:

source /etc/profile

    测试是否安装成功:

java -version、javac、java


七、上传HADOOP压缩包并进行解压

       在master主机上安装hadoop(每个节点都要安装)

       hadoop-2.7.3.tar.gz     

解压:tar -zxvf /opt/hadoop/hadoop-2.7.3.tar.gz

八、配置环境变量并生效     

vi /etc/profile              //直接编辑

       在末尾添加:


export HADOOP_HOME=/opt/fi_client/HDFS/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

hadoop替换主节点 配置hadoop集群主节点_xml_02

环境变量(profile)生效:

source /etc/profile

九、配置hadoop配置文件

需要配置的文件位置为/opt/fi_client/HDFS/hadoop-2.7.3/etc/hadoop,需要修改的有以下几个

注:/opt/fi_client/HDFS指的是hadoop的自定义路径  

hadoop-env.sh              //运行环境配置JDK、JVM等配置

    yarn-env.sh                //运行环境配置JDK、JVM等配置

    core-site.xml              //hadoop各组件配置文件

    hdfs-site.xml              //hadoop各组件配置文件

    mapred-site.xml            //hadoop各组件配置文件

    yarn-site.xml              //hadoop各组件配置文件

    slaves                     //子节点配置(里面写入所有子节点的hostname)

其中 hadoop-env.sh和yarn-env.sh里面都要添加jdk的环境变量:    

    hadoop-env.sh中:

    # The java implementation to use.

    export JAVA_HOME=/opt/fi_client/JDK/jdk1.8.0_141

yarn-env.sh中:

    # some Java parameters

    export JAVA_HOME=/opt/fi_client/JDK/jdk1.8.0_141

core-site.xml中:

<configuration>

        <property>

             <!--主节点hostname-->

             <name>fs.defaultFS</name>

             <value>hdfs://master:9000</value>    

         </property>

         <property>

             <name>io.file.buffer.size</name>

             <value>131072</value>

         </property>

         <property>

              <name>hadoop.tmp.dir</name>

              <value>file:/usr/temp</value>

        </property>

        <property>

              <name>hadoop.proxyuser.root.hosts</name>

              <value>*</value>

        </property>

        <property>

              <name>hadoop.proxyuser.root.groups</name>

              <value>*</value>

        </property>

</configuration>

hdfs-site.xml中:

<configuration>

        <property>

             <!--主节点的hostname-->

             <name>dfs.namenode.secondary.http-address</name>

             <value>master:9001</value>

        </property>

        <property>

             <!--主节点的文件保存目录-->

             <name>dfs.namenode.name.dir</name>

             <value>file:/usr/dfs/name</value>   

        </property>

        <property>

             <!--子节点文件数据的本地保存目录-->

             <name>dfs.datanode.data.dir</name>                  

             <value>file:/usr/dfs/data</value>

        </property>

        <property>

             <!--hdfs副本的数量,不要超过子节点的数量-->

             <!--默认是3-->

             <name>dfs.replication</name>     

             <value>2</value>     

        </property>

        <property>

             <name>dfs.webhdfs.enabled</name>

             <value>true</value>

        </property>

        <property>

             <name>dfs.permissions</name>

             <value>false</value>

        </property>

        <property>

             <name>dfs.web.ugi</name>

             <value>supergroup</value>

        </property>

</configuration>

mapred-site.xml中:  

//此文件不存在,用cp命令复制一份,原文件仍存在命令:

cp mapred-site.xml.template  mapred-site.xml  

<configuration>

        <property>

             <name>mapreduce.framework.name</name>

             <value>yarn</value>

        </property>

        <property>

             <!-- hostname-->

             <name>mapreduce.jobhistory.address</name>

             <value>master:10020</value>

        </property>

        <property>

             <!-- hostname-->

             <name>mapreduce.jobhistory.webapp.address</name>

             <value>master:19888</value>

        </property>

</configuration>

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>

             <!-- hostname-->

             <name>yarn.resourcemanager.address</name>

             <value>master:8032</value>

        </property>

        <property>

             <!-- hostname-->

             <name>yarn.resourcemanager.scheduler.address</name>

             <value>master:8030</value>

        </property>

        <property>

             <!-- hostname-->

             <name>yarn.resourcemanager.resource-tracker.address</name>

             <value>master:8031</value>

        </property>

        <property>

             <!-- hostname-->

             <name>yarn.resourcemanager.admin.address</name>

             <value>master:8033</value>

        </property>

        <property>

             <!-- hostname-->

             <name>yarn.resourcemanager.webapp.address</name>

             <value>master:8088</value>

        </property>

</configuration>

slaves中(此文件中没有localhost):

slaver1
slaver2
Master

 

十、拷贝hadoop安装文件到子节点

      主节点执行

scp -r /usr/hadoop-2.6.4 root@slaver1:/usr  //加上-r表示递归,注意路径

scp -r /usr/hadoop-2.6.4 root@slaver2:/usr  //加上-r表示递归,注意路径

     拷贝profile到子节点(主节点执行)  

scp /etc/profile root@slaver1:/etc/

scp /etc/profile root@slaver2:/etc/

    在两个子节点上分别使新的profile生效:

source /etc/profile

 

十一、格式化namenode

          主节点上进入hadoop目录(etc下面的hadoop)

          然后执行:

./bin/hadoop namenode  –format         //自己手敲上去

         新版本用下面的语句不用hadoop命令了   

./bin/hdfs namenode  –format //格式化 
如果已经配置过环境变量,则使用 hdfs namenode –format

        提示:successfully formatted表示格式化成功 //倒数第六个INFO

 

十二、启动(终止)hadoop

          主节点上在hadoop的sbin目录中执行:   

./start-all.sh 或者 start-all.sh           //启动整个集群

./start-dfs.sh 或者 start-dfs.sh           //启动dfs

./start-yarn.sh 或者 start-yarn.sh         //启动yarn

./sbin/stop-all.sh 或者 stop-all.sh        //终止整个集群

./stop-dfs.sh 或者 stop-dfs.sh             //终止dfs

./stop-yarn.sh 或者 stop-yarn.sh           //终止yarn

        hadoop集群正常启动后:

       主节点上jps进程有:  

NameNode

DataNode

SecondaryNameNode

ResourceManager

NodeManager

      子节点上的jps进程有:   

DataNode

NodeManager

      如果这样表示hadoop集群配置成功

      hdfs范畴:namenode、datanode、secondarynamenode

      yarn范畴:ResourceManager、NodeManager