搭建三节点的hadoop集群:
要求:
|
三台机子同时进行:
步骤一:
添加用户,设置密码
useradd hadoop
passwd hadoop
步骤二:
为用户设置权限
su root
visudo
在文件的如下位置,为hadoop添加一行即可
root ALL=(ALL) ALL
hadoop ALL=(ALL) ALL
#如果需要用户hadoop使用sudo命令时不输入密码,则是输入以下一句:
hadoop ALL=(ALL) NOPASSWD:ALL
步骤三:
同步时间:三台主机同时设置
sudo date -s "00:00:00"
(可以用时间服务器定时同步主节点来修改)
步骤四;
设置主机名:
sudo vi /etc/sysconfig/network
每台各设置
hadoop01
hadoop02
hadoop03
(思考:可以用发送的方式来发送给从节点或其他主机)
步骤五:
配置内网域名映射(在各主机下都写三台主机的映射)sudo vi /etc/hosts
hadoop01
hadoop02
hadoop03
(思考:可以用发送的方式来发送给从节点或其他主机)
步骤六:
配置防火墙
service iptables start
service iptables status
service iptables stop
chkconfig iptables --list
chkconfig iptables off
service iptables save
(思考:是否可以用时间服务器定时对防火墙进行关闭保存,或者从一开始就设置防火墙自动关闭)
下面在一台主机上进行:
步骤七:
安装jdk,hadoop
上传jdk、Hadoop包
解压jdk包:/home/hadoop/jdk1.8.0_101
tar -zxvf jdk-8u101-linux-x64.tar.gz
修改配置文件 sudo vi /etc/profile
export JAVA_HOME=/home/hadoop/jdk1.8.0_101
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:
PATH=$PATH:$JAVA_HOME/bin:
刷新配置文件:source /etc/profile
(思考:是否可以将发送后的配置文件进行定时刷新)
which java 查看当前系统使用的jdk/home/hadoop/jdk1.8.0_101/bin/java
步骤八:
解压Hadoop包
tar -zxvf hadoop-2.6.1.tar.gz
修改配置文件(包括java,hadoop) sudo vi /etc/profile
export JAVA_HOME=/home/hadoop/jdk1.8.0_101
export HADOOP_HOME=/home/hadoop/hadoop-2.6.1
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
刷新配置文件:source /etc/profile
步骤九:设置免登录
免密登录作用:用于在namenode 和datanode 之间传递。
(在根目录(~)ssh (按table键显示ssh文件,包括ssh-key加密钥)
cd /home/hadoop/.ssh 可以进入.ssh文件夹
在.ssh 路径下 ls 可以看到know_hosts文件)
配置加密命令:
在根目录(~)下 cd ~
ssh-keygen -t rsa 回车执行,然后一路回车(好像一共回车3次)
然后在 /home/hadoop/.ssh/目录下
cd /home/hadoop/.ssh/
ls
显示增加了id_rsa id_rsa.pub两个文件
在/home/hadoop/.ssh/目录下,ssh- (按table键)
显示有ssh-copy-id 文件
在/home/hadoop/.ssh/下执行
ssh-copy-id hadoop@hadoop01 之后再输入密码,回车
ssh-copy-id hadoop@hadoop02 之后再输入密码,回车
ssh-copy-id hadoop@hadoop03 之后再输入密码,回车
在~根目录下,scp ./myfile hadoop@hadoop02:/home/hadoop/ 回车执行,可远程发送
在~根目录下,ssh hadoop@hadoop03 回车执行可进入第三台主机
删掉/hadoop-2.6.1/share文件夹下doc文件夹(用不到)
步骤十:
注意:把配置好的jdk文件夹发送给其他节点:
scp -r jdk1.8.0_101 hadoop@hadoop02:/home/hadoop/
scp -r jdk1.8.0_101 hadoop@hadoop03:/home/hadoop/
也可以发送环境变量过去:
sudo scp /etc/profile root@hadoop02:/etc/
sudo scp /etc/profile root@hadoop03:/etc/
刷新系统环境变量配置文件: source /etc/profile
步骤十一:
给Hadoop框架配置jdk(作用:启动集群)
vi /home/hadoop//hadoop-2.6.1/etc/hadoop/hadoop-env.sh
将export JAVA_HOME=${JAVA_HOME} 修改为
export JAVA_HOME=/home/hadoop/jdk1.8.0_101
步骤十二:
在/home/hadoop/hadoop-2.6.1/路径下添加hadoopdata文件夹
cd /home/hadoop/hadoop-2.6.1/
mkdir hadoopdata
手动创建的hadoopdata文件夹是用来存放数据和元数据的,
注意:1.要放在/home/hadoop/hadoop-2.6.1/下,不能放在根目录下,放在根目录下没有权限操作。
2.要在发送环境变量和配置好的hadoop文件夹之前创建。
步骤十三:修改配置文件
修改配置文件
修改core-site.xml文件
<property>
<name>fs.defaultFS</name>
<!--配置hdfs系统的地址-->
<value>hdfs://hadoop01:8020</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-2.6.1/hadoopdata/tmp</value>
</property>
修改hdfs-site.xml文件
<property>
<name>dfs.replication</name>
<!--副本数3-->
<value>3</value>
</property>
<property>
<!--hadoop2.x默认数据块大小是128M-->
<name>dfs.blocksize</name>
<value>134217728</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<!--NameNode节点存储元数据的位置-->
<value>file:///home/hadoop/hadoop-2.6.1/hadoopdata/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<!--DataNode节点存储数据块的位置-->
<value>file:///home/hadoop/hadoop-2.6.1/hadoopdata/dfs/data</value>
</property>
<property>
<name>fs.checkpoint.dir</name>
<value>file:///home/hadoop/hadoop-2.6.1/hadoopdata/checkpoint/dfs/cname</value>
</property>
<property>
<name>fs.checkpoint.edits.dir</name>
<value>file:///home/hadoop/hadoop-2.6.1/hadoopdata/checkpoint/dfs/cname</value>
</property>
<property>
<name>dfs.http.address</name>
<value>hadoop01:50070</value>
</property>
<property>
<!--hdfs系统的web地址-->(主机2为主机1做辅助作用)
<name>dfs.secondary.http.address</name>
<value>hadoop02:50090</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
修改mapred-site.xml文件
命令如下:
# mv mapred-site.xml.template mapred-site.xml
#vi mapred-site.xml
<property>
<!--配置执行计算模型时使用yarn资源调度器-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
<final>true</final>
</property>
<property>
<!--配置MapReduce框架的历史服务的地址-->
<name>mapreduce.jobhistory.address</name>
<value>hadoop01:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop01:19888</value>
</property>
修改yarn-site.xml
<property>
<!--配置resourcemanager服务的地址-->
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>hadoop01:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoop01:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hadoop01:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hadoop01:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hadoop01:8088</value>
</property>
步骤十四:配置datanode,datamanager节点
#vi slaves
将所有需要配置成slave类型的机器的机器名写在其内部即可.
注意:每个机器名占一行。
hadoop01
hadoop02
hadoop03
步骤十五:
(Master文件存的是的secondarynamenode列表)(master文件没有,需手动创建)注意要在hadoop目录下创建
#vi /etc/hadoop/master
# vi ./master
hadoop02
步骤十六:
//将配置好的Hadoop文件夹发送给slave1和slave2机子。在~根目录下进行发送,即远程拷贝
#scp -r hadoop-2.6.1 hadoop@hadoop02:/home/hadoop/
#scp -r hadoop-2.6.1 hadoop@hadoop03:/home/hadoop/
步骤十七:
配置Hadoop框架的环境变量:----一会儿调一下
export HADOOP_HOME=/home/hadoop/hadoop-2.6.1 (直接粘贴)
PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin (配置bin,是因为执行脚本在bin里面.将 :$HADOOP_HOME/bin:$HADOOP_HOME/sbin 直接添加
在 PATH=$PATH:$JAVA_HOME/bin 后即可) 作用:配置之后,在任何路径下都可以使用/sbin目录下的脚本。
# source /etc/profile
步骤十八:
发送hadoop的环境变量到其他节点:
scp /etc/profile root@hadoop02:/etc/
scp /etc/profile root@hadoop03:/etc/
步骤十九;
可测试:根目录~下 st+table键出现以st开头的文件即表明配置成功。
步骤二十:
//启动Hadoop集群(因为name和data目录只有在格式化之后才创建)
在/home/hadoop/hadoop-2.6.1/hadoopdata文件夹下格式化
//启动之前先格式化,只需要一次即可(在NameNode节点)
#hadoop namenode -format
启动之前最好检查防火墙是否处于关闭状态。
步骤二十一;启动hdfs集群和yarn集群
在根目录下~,执行start-dfs.sh 先启动hdfs集群。执行完毕之后,显示启动namenode 和datanode。
在/dfs文件夹下自动创建了data和name两个文件夹。
在~根目录下,执行start-yarn.sh ,启动yarn集群,启动后显示resourcemanager和nodemanager
(log显示在第一台启动resourcemanager)
步骤二十二;
jps验证:显示启动各个功能
步骤二十三:
集群启动成功,上传文件测试:
根目录~下,vi aaa ,随便写点东西即可,保存退出
根目录下执行,hadoop fs -put ./aaa / (注:./aaa表示当前路径,后面的 / 表示hdfs系统的根路径
搭建集群主要在于配置文件,配置文件说明链接:http://www.cnblogs.com/pingzizhuanshu/p/8964011.html
以五节点为例:链接:http://www.cnblogs.com/pingzizhuanshu/p/8964025.html