三台虚拟机互信
- 创建3台虚拟机,例如IP地址分别为192.168.236.8,192.168.236.9,192.168.236.10
- 分别更改各自的hostname,拿192.168.236.100为例,
输入hostname,查看自己的hostname,一般是自己的外网地址;输入hostnamectl set-hostname hadoop100,将hostname改成hadoop100
3. 将其它虚拟机和自己的hostname添加到hosts文件里(每台虚拟机都要做);输入vi /etc/hosts,在下面增加本机和需要连接的虚拟机的ip和hostname:比如
192.168.236.100 hadoop100
192.168.236.101 hadoop101
让后可以把秘钥传输给其它虚拟机,这样就不用改其它虚拟机上的文件了(scp /etc/hosts root@hadoop101:/etc/)
4. (每台虚拟机都要做)生成秘钥:ssh-keygen -t rsa -P “”,直接回车,再回车
5.(每台虚拟机都要做)自己保存秘钥:cat .ssh/id_rsa.pub > .ssh/authorized_keys
6.(每台虚拟机都要做)把秘钥传递给其它机器:
ssh-copy-id -i .ssh/id_rsa.pub -p22 root@hadoop101
7.尝试连接其它虚拟机:ssh root@hadoop101,不需要密码就可以直接登录
安装jdk
wget安装:
4.1 下载wget
yum install wget -y
4.2 下载jdk
wget --no-check-certificate --no-cookies --header “Cookie: oraclelicense=accept-securebackup-cookie” http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm
4.3 安装jdk
rpm -ivh jdk-8u131-linux-x64.rpm
yum安装或者rpm安装,不需要配环境变量
安装hadoop(jdk安装位置、hadoop安装位置,hostname,这三个都需要自己更改)
1.下载hadoop-2.6.0-cdh5.14.2.tar.gz包,下载hadoop-native-64-2.6.0.tar两个包
2.选择一台虚拟机,比如192.168.236.8,在opt下建立software文件夹,将以上两个包拖到该文件夹下
3.安装该文件:tar -zxvf hadoop-2.6.0-cdh5.14.2.tar.gz
4.名字太长,将其改名为hadoop:mv hadoop-2.6.0-cdh5.14.2 hadoop
5.可以删除掉压缩包:rm -f hadoop-2.6.0-cdh5.14.2.tar.gz
6.进入hadoop:cd hadoop查看目录结构
7.bin:执行文件;bin-mapreducel:是mapreduce的执行文件,系统自动操作;cloudera:发行公司的信息,hadoop是cdh版;etc放配置文件;examples和examples-mapreducel里面放的是一些示例;include是一些拓展的东西;lib是一些jar包依赖包;sbin也是一些启动文件;share是一些共享的东西,搭集群时会用到;src是源码;
8.进入该etc下的hadoop文件,修改配置:cd etc/hadoop(注意etc前面不要加/)里面的内容如下图所示:
9.修改启动环境,是hadoop启动和java相关联。进入hadoop-env.sh内部:vi hadoop-env.sh,内容如下:
将export JAVA_HOME=${HAVA_HOME}注释掉,在下面重新加入本机JAVA_HOME地址:export JAVA_HOME=/opt/software/jdk1.8.0_221
各自电脑不同,可以打开新窗口后,输入echo $JAVA_HOME查看位置
按ESC退出插入模式,按:wq保存退出
10.修改核心配置(伪分布式)。进入core-site.xml,vi core-site.xml,内容如下所示:
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop9:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/software/hadoop/tmp</value>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
一共添加了4向内容,后面两项是为搭建集群配置的,*代表任意人/任意用户都可以访问
11.进入hdfs-site.xml,数据备份数目:vi hdfs-site.xml,如下所示:(注意hadoop是装在opt下还是root下)
数据备份数目:如果是本地模式,vlaue里不填;如果是伪分布式,vlalue填1;有几个节点就填几。
dfs.replication
1
12.看看各个虚拟机之间是否可以免密登录ssh hadoop9,能进入的话,exit退回
13.配置yarn,yarn是用来管理mapreduce的。首先进入mapred-site.xml.template:vi mapred-site.xml.template
mapreduce.framework.name
yarn
修改后:
给它改名字:mv mapred-site.xml.template mapred-site.xml
14.配置node的用法是mapreduce_shuffle,指定yarn的Resourcemanager地址(不配的话是本地模式,配置的话是伪分布式)进入yarn-site.xml:vi yarn-site.xml
修改后:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop8</value>
</property>
15.linux下配置环境变量(注意etc前面有/,不是在hadoop里了) vi /etc/profile
在倒数第二行和倒数第一行中间添加:
export HADOOP_HOME=/opt/software/hadoop(自己hadoop的安装目录,以下是不必须的配置)
export HADOOP_MAPRED_HOME=
H
A
D
O
O
P
H
O
M
E
e
x
p
o
r
t
H
A
D
O
O
P
C
O
M
M
O
N
H
O
M
E
=
HADOOP_HOME export HADOOP_COMMON_HOME=
HADOOPHOMEexportHADOOPCOMMONHOME=HADOOP_HOME
export HADOOP_HDFS_HOME=
H
A
D
O
O
P
H
O
M
E
e
x
p
o
r
t
Y
A
R
N
H
O
M
E
=
HADOOP_HOME export YARN_HOME=
HADOOPHOMEexportYARNHOME=HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=
H
A
D
O
O
P
H
O
M
E
/
l
i
b
/
n
a
t
i
v
e
e
x
p
o
r
t
H
A
D
O
O
P
O
P
T
S
=
"
−
D
j
a
v
a
.
l
i
b
r
a
r
y
.
p
a
t
h
=
HADOOP_HOME/lib/native export HADOOP_OPTS="-Djava.library.path=
HADOOPHOME/lib/nativeexportHADOOPOPTS="−Djava.library.path=HADOOP_HOME/lib"
改写最后一行:
export PATH=
J
A
V
A
H
O
M
E
/
b
i
n
:
JAVA_HOME/bin:
JAVAHOME/bin:JAVA_HOME/jre/bin:
H
A
D
O
O
P
H
O
M
E
/
b
i
n
:
HADOOP_HOME/bin:
HADOOPHOME/bin:HADOOP_HOME/sbin:$PATH
16.source /etc/profile(不报错就行)
需要删除logs和tmp文件夹,才能格式化
17.格式化:hdfs namenode -format(有错的话,返回修改)
含有successful formatted和Exiting with status 0的算成功
补充:history配置文件的更改:位置:vi mapred-site.xml增加
mapreduce.jobhistory.address
hadoop9:10020
mapreduce.jobhistory.webapp.address
hadoop9:19888
单独打开历史服务器:
sbin/mr-jobhistory-daemon.sh start historyserver
18.回到外层hadoop路径cd …/…,用pwd查看是否在/root/soft/hadoop里,ll可以看到tmp文件夹
19.start-然后srart-all.sh(相当于start-dfs.sh和start-yarn.sh),回答yes
再输入jps
一共6个,缺少的话,缺哪个去看日志的报错:
tail -200f logs/hadoop-root-namenode-hadoop8.log
20.关闭所有,stop-all.sh
start-all.sh开启,然后输入jps查看,然后输入hdfs dfs -mkdir /test(在dfs里创建文件夹)登录网址:192.168.236.8:50070,可以看到test文件夹,在虚拟机上输入hdfs dfs -put README.txt /test(将README.txt放入test文件夹里),在输入hadoop jar share/hadoop/mapreduce2/hadoop-mapreduce-examples-2.6.0-cdh5.14.2.jar wordcount /test/README.txt /output(对README.txt文件进行计数)输入网址192.168.236.8:8088查看;在linux上输入hdfs dfs -cat /output/part-r-00000,把单词统计出来了