多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 准备工作 (本操作环境CentOS6.5,centos7部分命令不同): 1、 配置主机名 Master 节点: master Slave 节点: slave1 Slave 节点: slave2 自定义主机名:#vi /etc/sysconfig/network NETWORKING=yes #启动网络 HOSTNAME=master #主机名 centos7永久性的修改主机名称,重启后能保持修改后的: ``` hostnamectl set-hostname xxx ``` #hostname master **Slave 节点,操作同上,改成对应主机名称** 2、 配置 hosts文件 #vi /etc/hosts 192.168.6.250 master 192.168.6.251 slave1 192.168.6.252 slave2 *拷贝/etc目录下hosts文件到slaves scp -r /etc/hosts slave1:/etc/ scp -r /etc/hosts slave2:/etc/ *通信保证测试:除slave1 其它机器通过ping slave1 命令测试 ctrl+c结束 同理,除本身用其他机器测试ping slave2 …….. 3、 关闭防火墙(三台) > #service iptables status > #service iptables stop > #chkconfig iptables off 关闭防护 > #vi /etc/selinux/config **SELINUX=disabled** 4、 时间同步: 服务器集群强调协调性,要保持步调一致所以需要进行时间同步 (服务器的内部时钟每天也会有很大的误差) > #yum install -y ntpdate.x86_64 > #crontab -e ` 0(空格)1(空格)*(空格)*(空格)*(空格)/usr/sbin/ntpdate 1.cn.pool.ntp.org` > #/usr/sbin/ntpdate 1.cn.pool.ntp.org (2) ![](https://box.kancloud.cn/43ef77f6ac79643afbbd60dc353cba6f_638x370.png) vi /etc/ntp.conf ![](https://box.kancloud.cn/fcb3556386a28379717b1a8aeb0bb954_626x587.png)![](https://box.kancloud.cn/5f39344f8415cca4fba0aacf91192e4e_655x51.png) 另外两台从节点其他配置不变只需要将server后的IP改为主节点IP 5、 免密钥登录 该部分操作要在自定义用户目录下操作 #useradd hadoop #passwd hadoop #su hadoop [hadoop@master root]$cd [hadoop@master ~]$ssh-keygen -t rsa (一直回车,直到出现一个图形) [hadoop@master ~]$cd .ssh [hadoop@master .ssh]$ cat id_rsa.pub >> authorized_keys [hadoop@master .ssh]$chmod 600 authorized_keys ****以上操作在所有机器上做******* Master分发密钥: [hadoop@master .ssh]$ scp authorized_keys hadoop@slave1:~/.ssh [hadoop@master .ssh]$ scp authorized_keys hadoop@slave2:~/.ssh *测试:#ssh slave1 #exit 6、 安装 JDK (master和slave都需要) 一定要先删除 原有的jdk `#yum remove java-1.*` 建立文件夹:mkdir /usr/java 上传jdk软件包jdk-8u131-linux-x64.tar.gz到/usr/java [root@master ~]$ tar -xvf /usr/java/jdk-8u131-linux-x64.tar.gz (会安装到/usr/java) 再赋予权限 #chmod +x /usr/java/jdk1.8.0_131/bin/* jdk安装目录 [hadoop@master ~]$cd /usr/java/jdk1.8.0_131 [hadoop@master jdk1.8.0_131 ]$pwd /usr/java/jdk1.8.0_131 配置环境变量: $cd $vi .bash_profile export JAVA_HOME=/usr/java/jdk1.8.0_131 export PATH=$PATH:$JAVA_HOME/bin [hadoop@master ~]$source .bash_profile [hadoop@master ~]$ java -version 复制到其它机器: [hadoop@master ~]$ scp .bash_profile hadoop@slave1:~/ (slave2) [root@master #]$ scp -r /usr/java root@slave1:/usr/ (slave2) 在其他机器上:#cd . .bash_profile `#java –version` Hadoop安装配置 (推荐使用最新的Hadoop版本,本版本仅供参考) 全部在hadoop用户下操作 1、 新建software文件夹mkdir /home/hadoop/software 2、 上传hadoop包hadoop-2.7.3.tar.gz到/home/hadoop/software [hadoop@master software]$cp /mnt/hgfs/共享文件夹名称/hadoop-2.7.3.tar.gz /home/hadoop/software 3、 解压: [hadoop@master ~]$cd /home/hadoop/software [hadoop@master ~]$tar -xzvf hadoop-2.7.3.tar.gz 4、 修改配置文件 ![](https://box.kancloud.cn/d2a891533398fb38bd6da6afed801d6d_433x415.png) [hadoop@master ~]$cd /home/hadoop/software/hadoop-2.7.3/etc/hadoop 修改 hadoop-env.sh [hadoop@master hadoop]$vi hadoop-env.sh 在文件靠前的部分找到:export JAVA_HOME=${JAVA_HOME} 改为:export JAVA_HOME=/usr/java/jdk1.8.0_131(java安装路径) 修改 yarn-env.sh 找到:# export JAVA_HOME=/home/y/libexec/jdk1.6.0/ 改为:export JAVA_HOME=/usr/java/jdk1.8.0_131 ``` # 修改项前边该符号去掉!!! ``` 修改 core-site.xml ~~~ <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/software/hadoopdata</value> </property> <property> <name>hadoop.proxyuser.hadoop.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hadoop.groups</name> <value>*</value> </property> </configuration> ~~~ 注: ![](https://box.kancloud.cn/cacbb9e0428aeda6c29705bb08361860_554x308.png) 修改 hdfs-site.xml ~~~ <configuration> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration> ~~~ 注: ![](https://box.kancloud.cn/1c2a395a51001785fe06250622f44596_554x474.png) 修改 yarn-site.xml ~~~ <configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>master:18040</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:18030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:18025</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:18141</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:18088</value> </property> </configuration> ~~~ 注: ![](https://box.kancloud.cn/e2fb9f1a49593bf062bce640f7e5b4d1_508x670.png) 修改 mapred-site.xml 1.cp mapred-site.xml.template mapred-site.xml 2.vi mapred-site.xml <!—指定运行 mapreduce 的环境是yarn--> ~~~ <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> ~~~ 注: ![](https://box.kancloud.cn/8e38a29a484f34617a7ebe066f41753e_554x361.png) vi slaves 文件删除,添加: ~~~ slave1 slave2 ~~~ 5、 复制到从节点 使用下面的命令将已经配置完成的 Hadoop 复制到从节点 Hadoop Slave 上: [hadoop@master hadoop-2.7.3]$ cd /home/hadoop/software [hadoop@master software]$ scp -r hadoop-2.7.3 slave1:/home/hadoop/software/ [hadoop@master software]$ scp -r hadoop-2.7.3slave2:/home/hadoop/software/ 注意:因为之前已经配置了免密钥登录,这里可以直接远程复制。 6、 启动 Hadoop 集群 - 配置 Hadoop 启动的系统环境变量 [hadoop@master ~]$vi .bash_profile 将下面的代码追加到.bashrc 末尾: export HADOOP_HOME=/home/hadoop/software/hadoop-2.7.3 export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH 然后执行命令: [hadoop@master ~]$ source .bash_profile 启动hadoop集群 1、 创建数据目录 该节的配置需要同时在HadoopMaster 和 HadoopSlave上分别进行操作。 在 hadoop的用户主目录下,创建数据目录,命令如下: [hadoop@master ~]$ mkdir /home/hadoop/software/hadoopdata [hadoop@salve1 ~]$ mkdir /home/hadoop/software/hadoopdata [hadoop@slave2 ~]$ mkdir /home/hadoop/software/hadoopdata 2、 格式化hdfs文件系统 [hadoop@master ~]$ hdfs namenode -format 3、 启动hadoop [hadoop@master ~]$start-all.sh [hadoop@master ~]$ jps 29657 SecondaryNameNode 29478 NameNode 29792 ResourceManager 30052 Jps [hadoop@slave1 ~]$ jps 6872 Jps 6740 DataNode 6838 NodeManager 在 HadoopMaster 上启动 Firefox 浏览器,在浏览器地址栏中输入输入 http://master:50070/,(或master的IP),检查namenode 和 datanode 是否正常 在浏览器地址栏中输入输入http://master:18088/,检查 Yarn 是否正常。 **示例程序测试2 [root@ master tmp]# pwd /tmp [root@ master tmp]# vi wc01.txt hello world hello hadoop hadoop hadoop hadoop [hadoop@master ~]$hadoop fs -mkdir -p /tmp/wordcount/in [hadoop@master ~]$hadoop fs -put /tmp/wc01.txt /tmp/wordcount/in [hadoop@master ~]$hadoop jar software/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /tmp/wordcount/in /tmp/wordcount/out 查看结果: [hadoop@master ~]$hdfs dfs -cat /tmp/wordcount/out/part-r-00000 16/09/03 02:22:58 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable hadoop 4 hello 2 world 1