Hadoop集群配置搭建文档/教程

来源:互联网 发布:2015人口普查数据 编辑:程序博客网 时间:2024/06/07 20:33

Hadoop集群搭建之夜

废话少说、书归正传,集群搭建步骤:

  • 拥有两台或以上具有独立IP的机器
  • 每台机器设置好地址映射(hosts与hostname文件)
  • 每台机器依次配置好jdk、scala、hadoop环境
  • 增加独立的hadoop用户(可选)
  • 配置每台机器的ssh免密码登录(主要指master向slave)
  • 每台机器配置好hadoop下的五个xml配置文件
  • 初始化然后尝试运行
  • 排错然后再运行

错误的努力

我经历了一个错误的白费力气的夜晚:我尝试以我装了Ubuntu16.04的系统作为master节点带动一个Ubuntu的Aliyun服务器作为slave1,但是发现一切配置妥当之后,居然ssh自己的ip行不通,但是以localhost之名ssh自己却没问题;一通乱改之后发现:原来连接路由器的pc不具备独立ip,无法被外网ssh登录22号端口;所以pc连接都是以局域网内网ip在配置集群;于是我再出血61.55元再买一台主机作为slave1节点,原来的slave1因为性能尚可被命为master节点;


每台机器设置好地址映射

现在先在准备作为master的主机上作

vi /etc/hostname

然后抹去原来名字,设为”master”

vi /etc/hosts

然后添加

111.123.123.122 master121.133.123.125 slave1

然后在准备作为slave1的主机上

vi /etc/hostname

然后抹去原来名字,设为”slave1”

vi /etc/hosts

然后添加

111.123.123.122 master121.133.123.125 slave1

最好在pc上也配置一下代号,然后方便随时切换登录,之后会超频繁;


依次配置好jdk、scala、hadoop环境

下载jdk,scala,限于云主机速度我是用pc传过去的
供主机下载的地址:
JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
scala:http://www.scala-lang.org/download/

root@pc$ scp jdk-8u131-linux-x64.tar.gz master:/download/ root@pc$ scp scala-2.12.2.tgz master:/downloadroot@pc$ scp jdk-8u131-linux-x64.tar.gz slave1:/download/ root@pc$ scp scala-2.12.2.tgz slave1:/downloadroot@pc$ ssh masterroot@master$ sudo mkdir /usr/lib/jdkroot@master$ sudo mkdir /usr/lib/scalaroot@master$ sudo tar -zxvf jdk-8u131-linux-x64.tar.gz -C /usr/lib/jdkroot@master$ sudo tar -zxvf scala-2.12.2.tgz -C /usr/lib/scalaroot@master$ sudo vim /etc/profile

然后加入:

export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_131   export JRE_HOME=${JAVA_HOME}/jre  export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  export PATH=${JAVA_HOME}/bin:$PATHexport SCALA_HOME=/usr/lib/scala/scala-2.12.2export PATH=${SCALA_HOME}/bin:$PATH

再去往修改

root@master$ vim ~/.bashrc

增加在最后一行

export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_131

再使其生效

root@master$ source ~/.bashrcroot@master$ source /etc/profile

检查配置

root@master$ $JAVA_HOME/bin/java -version 

配置master向slave组的ssh免密码登录

请注意:root后面的名字表明了我们此时正在哪一台主机上面;

root@master$ apt-get install openssh-serviceroot@master$ ssh localhostroot@master$ logoutroot@master$ cd ~/.sshroot@master$ ssh-keygen -t rsaroot@master$ cat ./id_rsa.pub >> ./authorized_keysroot@master$ scp ~/.ssh/id_rsa.pub slave1:~root@master$ ssh slave1root@slave1$ cd ~/.sshroot@slave1$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keysroot@slave1$ rm ~/id_rsa.pubroot@slave1$ logoutroot@master$ ssh slave1root@slave1$ logout

最后两步即是检验是不是能够无密码登录了;


配置hadoop文件夹下的5个xml配置文件

由于要求集群每台主机的hadoop下配置相同,所以我们先在master上安装hadoop,完成配置,再复制到其他slave主机,最后再写入环境变量;

root@pc$ scp hadoop.tar.gz master:/usr/localroot@pc$ ssh masterroot@master$ cd /usr/hadooproot@master$ sudo tar -zxf ./hadoop-2.7.3.tar.gzroot@master$ cd hadoop-2.7.3/etc/hadooproot@master$ vim slavesroot@master$ vim core-site.xmlroot@master$ vim hdfs-site.xmlroot@master$ vim mapred-site.xmlroot@master$ vim yarn-site.xml

这五次分别配置为
slaves

slave1

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-2.7.3/tmp</value>                <description>Abase for other temporary directories.</description>        </property></configuration>

hdfs-site.xml

<configuration>        <property>                <name>dfs.namenode.secondary.http-address</name>                <value>master:50090</value>        </property>        <property>                <name>dfs.replication</name>                <value>1</value>        </property>        <property>                <name>dfs.namenode.name.dir</name>                <value>file:/usr/local/hadoop-2.7.3/tmp/dfs/name</value>        </property>        <property>                <name>dfs.datanode.data.dir</name>                <value>file:/usr/local/hadoop-2.7.3/tmp/dfs/data</value>        </property></configuration>

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>

yarn-site.xml

<configuration><!-- Site specific YARN configuration properties -->        <property>                <name>yarn.resourcemanager.hostname</name>                <value>master</value>        </property>        <property>                <name>yarn.nodemanager.aux-services</name>                <value>mapreduce_shuffle</value>        </property></configuration>

配置完成,打包整个hadoop文件复制到其他所有slave节点,并配置hadoop环境变量;

root@master$ tar -zcf hadoop.tar.gz ./hadoop-2.7.3/root@master$ scp hadoop.tar.gz slave1:/usr/localroot@master$ ssh slave1root@slave1$ cd /usr/localroot@slave1$ sudo tar -zxf ./hadoop-2.7.3.tar.gz

首先执行 vim ~/.bashrc,加入一行:

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

再执行source ~/.bashrc;


接近尾声

接下来可以启动试试,首先要初始化

root@master$ hdfs namenode -format root@master$ start-dfs.shroot@master$ start-yarn.shroot@master$ mr-jobhistory-daemon.sh start historyserver

尝试开启分布式任务

root@master$ hdfs dfs -mkdir /userroot@master$ hdfs dfs -mkdir -p /user/rootroot@master$ hdfs dfs -mkdir inputroot@master$ hdfs dfs -put /usr/local/hadoop-2.7.3/etc/hadoop/*.xml inputroot@master$ hdfs dfs -ls inputroot@master$ hadoop jar /usr/local/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'root@master$ hdfs dfs -cat output/*root@master$ stop-dfs.shroot@master$ stop-yarn.shroot@master$ mr-jobhistory-daemon.sh stop historyserver
原创粉丝点击