内存4G,硬盘50G
-
安装好linux /boot 200M /swap 2g / 剩余 -
*安装VMTools -
关闭防火墙 sudo service iptables stop sudo chkconfig iptables off -
设置静态IP,改主机名 编辑vim /etc/sysconfig/network-scripts/ifcfg-eth0 改成 ================================= DEVICE=eth0 TYPE=Ethernet ONBOOT=yes BOOTPROTO=static NAME=“eth0” IPADDR=192.168.5.101 PREFIX=24 GATEWAY=192.168.5.2 DNS1=192.168.5.2 ================================= 编辑vim /etc/sysconfig/network 改HOSTNAME=那一行 -
配置/etc/hosts vim /etc/hosts ============================= 192.168.1.100 hadoop100 192.168.1.101 hadoop101 192.168.1.102 hadoop102 192.168.1.103 hadoop103 192.168.1.104 hadoop104 192.168.1.105 hadoop105 192.168.1.106 hadoop106 192.168.1.107 hadoop107 192.168.1.108 hadoop108 192.168.1.109 hadoop109 ============================= -
创建一个一般用户atguigu,给他配置密码 useradd atguigu passwd atguigu -
配置这个用户为sudoers vim /etc/sudoers 在root ALL=(ALL) ALL 添加atguigu ALL=(ALL) NOPASSWD:ALL 保存时wq!强制保存 -
*在/opt目录下创建两个文件夹module和software,并把所有权赋给atguigu mkdir /opt/module /opt/software chown atguigu:atguigu /opt/module /opt/software -
关机,快照,克隆
从这里开始要以一般用户登陆
-
克隆的虚拟机改IP -
搞一个分发脚本 cd ~ vim xsync 内容如下: =================================================================
pcount=$
if ((pcount==0)); then
echo no args;
exit;
fi
p1=$1
fname=`basename $p1`
echo fname=$fname
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
user=`whoami`
for((host=103; host<105; host++)); do
echo ------------------- hadoop$host --------------
rsync -av $pdir/$fname $user@hadoop$host:$pdir
done
==============================================================
chmod +x xsync
sudo cp xsync /bin
sudo xsync /bin/xsync
-
配置免密登陆 1. 生成密钥对
ssh-keygen -t rsa 三次回车
2. 发送公钥到本机
ssh-copy-id hadoop102 输入一次密码
3. 分别ssh登陆一下所有虚拟机
ssh hadoop103
exit
ssh hadoop104
exit
4. 把/home/atguigu/.ssh 文件夹发送到集群所有服务器
xsync /home/atguigu/.ssh
-
在一台机器上安装Java和Hadoop,并配置环境变量,并分发到集群其他机器 1. 拷贝文件到/opt/software,两个tar包 2. tar -zxf h"+tab" -C /opt/module 3. tar -zxf j"+tab" -C /opt/module 4. sudo vim /etc/profile 在文件末尾添加 =======================================================
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
======================================================== 保存 5. source /etc/profile
6. sudo xsync /etc/profile
7. 在其他机器分别执行source /etc/profile
###所有配置文件都在$HADOOP_HOME/etc/hadoop 14. 首先配置hadoop-env.sh,yarn-env.sh,mapred-env.sh文件,配置Java_HOME 在每个文件第二行添加 export JAVA_HOME=/opt/module/jdk1.8.0_144
-
配置Core-site.xml <!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
-
配置hdfs-site.xml
dfs.replication 3
dfs.namenode.secondary.http-address hadoop104:50090 -
配置yarn-site.xml <!-- Site specific YARN configuration properties -->
<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
-
配置mapred-site.xml mapreduce.framework.name yarn
mapreduce.jobhistory.address hadoop104:10020
mapreduce.jobhistory.webapp.address hadoop104:19888 启动历史服务器:mr-jobhistory-daemon.sh start historyserver -
配置Slaves hadoop102 hadoop103 hadoop104 -
分发配置文件 xsync /opt/module/hadoop-2.7.2/etc -
格式化Namenode 在hadoop102 hdfs namenode -format -
启动hdfs start-dfs.sh -
在配置了Resourcemanager机器上执行 在Hadoop103上启动start-yarn.sh
24 mkdir input vim input/input abc def efg asd
hadoop fs -put input /
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /input /output
此处可能出现一个问题:启动Hadoop时,DataNode启动后一会儿自动消失 原因:因为datanode的clusterID 和 namenode的clusterID 不匹配,出现该问题的原因:在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令(hdfs namenode -format),这时namenode的clusterID会重新生成,而datanode的clusterID 保持不变。
解决办法: 1.打开hdfs-site.xml里配置的datanode和namenode对应的目录,分别打开current文件夹里的VERSION,可以看到clusterID项正如日志里记录的一样,确实不一致,修改datanode里VERSION文件的clusterID 与namenode里的一致,再重新启动dfs(执行start-dfs.sh)再执行jps命令可以看到datanode已正常启动。 2. 可能是因为重新格式化集群,但是以前的数据没有清理干净。重新格式化方式如下: 注意:重新格式化HDFS要将hdfs-site.xml中dfs.namenode.name.dir和dfs.datanode.data.dir所指定目录下的内容删除;core-site.xml中hadoop.tmp.dir目录中的内容删除。 然后重新启动hadoop集群,执行hadoop namenode -format
25 关 stop-dfs.sh stop-yarn.sh
26 hadoop-daemon.sh start namenode或datanode yarn-daemon.sh start resourcemanager或nodemanager
注意: 如果集群出了问题 stop-dfs.sh stop-yarn.sh cd $HADOOP_HOME rm -rf data logs 回到21步骤
|