hadoop集群搭建

来源:互联网 发布:手机网络直播怎么挣钱 编辑:程序博客网 时间:2024/06/14 19:08

零基础搭建hadoop集群,目标 1(master)+2(slaves)

工具准备:

  • vmware 12
  • centos 7 mini版
  • xshell用于远程主机
  • xftp5文件传输
  • centos 安装小工具 sz rz ;yum install lrzsz
  • hadoop 2.6.0
  • spark1.6.1 (暂时没用)
  • jdk-7u79-linux-x64

    1. vm及centos 安装过程忽略,参考 https://jingyan.baidu.com/article/eae0782787b4c01fec548535.html
      先安装一台centos, 修改centos源为中科大源,参考 http://mirrors.ustc.edu.cn/help/centos.html
    2. 网络配置可以使用桥接模式 , 尤其注意 之后复制的 centos mac需修改为不同。
    3. 查看网络 使用: ip addr 命令

    步骤

    1 安装jdk,配置jdk环境变量
    参考 : http://www.linuxidc.com/Linux/2016-09/135556.htm
    2 修改hostname 。我们在 Master 节点上执行如下命令修改主机名(即改为 Master,注意是区分大小写的)

 $  vi /etc/hostname

3 克隆2台机器,分别为 Slave1 Slave2 。之间的文件传输可使用命令

  $ scp   源文件  -r(如果是文件夹)  root@Slave1://目标文件地址

4 然后执行如下命令修改自己所用节点的IP映射。修改完后重启(shutdown -r now)

 $ vi /etc/hosts $ source /etc/hosts192.168.3.234 Master192.168.3.231 Slave1192.168.3.232 Slave2$ ping Master -c 3   # 只ping 3次,否则要按 Ctrl+c 中断

5 ssh无密码验证配置
(1) 首先生成 Master 节点的公匙,在 Master 节点的终端中执行

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

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

$ cat ./id_rsa.pub >> ./authorized_keys

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

$ scp ~/.ssh/id_rsa.pub root@Slave1:/root/

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

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

(5)测试

$ ssh Slave1$ exit

6 将hadoop2.6.0 拷贝至 /usr 目录下 并解压

7 配置 PATH变量

  $ vi  /etc/profile export JAVA_HOME=/usr/jdk1.7.0_79export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=$PATH:$JAVA_HOME/binexport PATH=$PATH:/usr/hadoop-2.6.0/bin:/usr/hadoop-2.6.0/sbin最后,$ source  /etc/profile

8 配置集群/分布式环境 (/hadoop-2.6.0/etc/hadoop 目录下)

(1) 修改 slaves
Msater
Slave1
Slave2
(2) 修改 core-site.xml

<configuration>        <property>                <name>fs.defaultFS</name>                <value>hdfs://Master:9000</value>        </property>        <property>                <name>hadoop.tmp.dir</name>                <value>file:/root/tmp</value>                <description>Abase for other temporary directories.</description>        </property></configuration>

(3) 文件 hdfs-site.xml,dfs.replication 一般设为 slave数量。此处需要新建 dfs和tmp文件目录

<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:/root/dfs/name</value>        </property>        <property>                <name>dfs.datanode.data.dir</name>                <value>file:/root/dfs/data</value>        </property></configuration>

(4) mapred-site.xml (需要先重命名,默认文件名为 mapred-site.xml.template , $ cp mapred-site.xml.template mapred-sit

<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>

9 将文件复制到其它机器
(1) Master节点

$ cd /usr/local$ sudo rm -r ./hadoop/tmp     # 删除 Hadoop 临时文件$ sudo rm -r ./hadoop/logs/*   # 删除日志文件$ scp -r /hadoop-2.6.0  root@Slave1:/usr/

(2) 在 Slave1 节点上执行

$sudo chmod -R /usr/hadoop-2.6.0

(3) 第一次启动前需要先对 Master 节点执行 NameNode 的格式化

$hdfs namenode -format

如果 权限不够,查看hdfs权限,并给予权限

$ ll /usr/hadoop-2.6.0/bin/hdfs

10 CentOS系统需要关闭防火墙

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

11 Master上启动hadoop

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

12 查看 各进程 $ jps
(1)在 Master 节点上可以看到 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 进程
(2)在 Slave 节点可以看到 DataNode 和 NodeManager 进程
(3)另外还需要在 Master 节点上通过命令 hdfs dfsadmin -report 查看 DataNode 是否正常启动,如果 Live datanodes 不为 0 ,则说明集群启动成功
(4)也可以通过 Web 页面看到查看 DataNode 和 NameNode 的状态:http://master:50070/。如果不成功,可以通过启动日志排查原因。
13. 执行分布式实例
(1) 首先创建 HDFS 上的用户目录

$ hdfs dfs -mkdir -p /user/hadoop

(2) 将 /usr/hadoop-2.6.0/etc/hadoop 中的配置文件作为输入文件复制到分布式文件系统中

$ hdfs dfs -mkdir /input$ hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml /input

(3) 通过查看 DataNode 的状态(占用大小有改变),输入文件确实复制到了 DataNode 中
(4)运行 MapReduce 作业

$ hadoop jar /usr/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep /input /output 'dfs[a-z.]+'

(5) 同样可以通过 Web 界面查看任务进度 http://master:8088/cluster,在 Web 界面点击 “Tracking UI” 这一列的 History 连接,可以看到任务的运行信息
(6) 关闭 Hadoop 集群也是在 Master 节点上执行的

$ stop-yarn.sh$ stop-dfs.sh$ mr-jobhistory-daemon.sh stop historyserver

参考:
http://dblab.xmu.edu.cn/blog/install-hadoop-cluster/
http://www.cnblogs.com/zengxiaoliang/p/6478859.html
http://blog.sina.com.cn/s/blog_95b63fc90102vrvy.html
http://dblab.xmu.edu.cn/post/7586/#userconsent#

原创粉丝点击