网上很多教程,这里不详述 注意事项:
(1)安装顺序:虚拟机节点先安装一个,完成基本配置后通过“克隆”的方式复制另外两个,这样既可以保证环境统一,又比较方便。
(2)网络连接:选择NAT方式。建议最好手动把IP地址固定下来,避免动态分配的时候错乱。
(3)防火墙:关闭防火墙,避免出现后面不必要的麻烦,chkconfig iptables off。
(1)安装vim
sudo apt-get install vim(2)安装ssh
apt-get install openssh-serverPS:可以通过service ssh status 查看ssh状态。
修改HOSTNAME的值为master。
无论虚拟机suspend还是暂停, 每次机器重启后ip都会自动+1, 而且开机刚进入虚拟机时ip不变, 是过一会儿才自动变化的.
所以需要固定IP
vi /etc/hosts 127.0.0.1 localhost 192.168.190.131 master 192.168.190.132 slave01 192.168.190.133 slave02 192.168.190.134 slave03(1)解压:
tar -zxvf jdk1.7.0_79.tar /usr/lib/java [可以替换成你安装的路径](2)修改环境变量:
vim /etc/profile在最下面添加:
export JAVA_HOME=/usr/lib/java/jdk-13.0.1 export PATH=$JAVA_HOME/bin:$PATH修改完后,让配置文件生效:
source /etc/profile(1)解压:
tar -zxvf hadoop-2.6.5.tar.gz /opt/ [可以替换成你安装的路径](2)修改环境变量
vim /etc/profile在最下面添加:
export HADOOP_HOME=/opt/hadoop-2.6.5 export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH修改完后,让配置文件生效:
source /etc/profile(1)在三台机器上分别执行如下命令,一路按回车即可。
ssh-keygen -t rsa(2)刚生成的文件保存在~/.ssh/下,进入命令
cd /home/eric/.ssh进入.ssh隐藏文件夹内,输入ls可以看到id_rsa,私钥和id_rsa.pub,公钥,复制公钥到authorized_keys
cp id_rsa.pub authorized_keys(3)做ssh认证
将master公钥追加到slave01的authorized_keys里面, 使master免登陆进入slave01
scp eric@master:/home/eric/.ssh/id_rsa.pub ./master.rsa.pub cat master.rsa.pub >> authorized_keys将slave01公钥追加到master的authorized_keys里面,使slave01免登陆进入master
scp eric@slave01:/home/eric/.ssh/id_rsa.pub ./slave01.rsa.pub cat slave01.rsa.pub >> authorized_keysslave02同理
如果遇到仍然需要密码的情况执行以下操作:
(一)修改文件"authorized_keys"权限
chmod 600 ~/.ssh/authorized_keys(二)设置SSH配置
sudo vim /etc/ssh/sshd_config在末尾添加一下文本
RSAAuthentication yes # 启用 RSA 认证 PubkeyAuthentication yes # 启用公钥私钥配对认证方式 AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)(三)重启
service sshd restart建议:最好是三台都互相免密码登录,不只是从master到另外两台。
(4)测试:
本地测试环路
ssh localhost出现Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.4.0-21-generic x86_64)即可
ssh slave01看是否不用密码就可以登录过去,直接进入,表示成功。
(5)常用命令
/etc/init.d/ssh start /etc/init.d/ssh restart /etc/init.d/ssh stop我用的是hadoop-2.6.5,其实配置大同小异。
在hadoop安装路径下新建文件夹,我的位置在/opt/hadoop-2.6.5/
mkdir dfs mkdir dfs/name mkdir dfs/data mkdir tmp转到配置路径下
cd /opt/hadoop-2.6.5/etc/hadoop/(1)配置文件:core-site.xml
在<configuration></configuration>里添加如下内容:
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/opt/hadoop-2.6.5/temp</value> <description>Abase for other temporary directories.</description> </property> </configuration>(2)配置文件:hdfs-site.xml
<configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>master:9001</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/opt/hadoop-2.6.5/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/opt/hadoop-2.6.5/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> </configuration>(3)配置文件:mapred-site.xml
现在当前目录下执行
cp mapred-site.xml.template mapred-site.xml得到mapred-site.xml,进行配置
<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>(4)配置文件:yarn-site.xml
<configuration> <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.address</name> <value>master:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property> </configuration>(5)配置文件:slaves
将内容替换为节点名称
slave01 slave02(6)vim masters
创建masters,加入主机名称
master(7)配置文件:yarn-env.sh
找到# export JAVA_HOME=/home/y/libexec/jdk1.6.0/(一个被注释掉的语句) 取消注释,并将路径修改成你存放jdk的位置。
(8)配置文件:hadoop-env.sh
同(7)中一样,修改export JAVA_HOME的路径。
(9)同步配置到子节点
scp /opt/hadoop2.6.5/etc/hadoop/* slave01:/opt/hadoop/etc/hadoop/ scp /opt/hadoop2.6.5/etc/hadoop/* slave02:/opt/hadoop/etc/hadoop/格式为scp 主机hadoop路径/* 子结点名称: 子结点hadoop路径
至此配置设置完成了!
(1)格式化节点
在主机上输入
hadoop namenode -format注意:只要出现“successfully formatted”就表示成功了。
(2)运行集群
直接在主机输入
/opt/hadoop-2.6.5/sbin/start-all.sh /opt/hadoop-2.6.5/sbin/stop-all.sh(关闭集群)如果没有报错出现ERROR,则可以用jps检验各后台进程是否成功启动。
master
eric@master:~$ jps 4640 NameNode 3200 NameNode 4850 SecondaryNameNode 3732 ResourceManager 5860 Jpsslave01
3168 DataNode 3563 Jps 3311 NodeManager此时说明集群运行正常。
(3)通过网站查看集群情况
在网址输入 https://master的ip:50070
http://192.168.190.128:8088/cluster/
(1)准备数据
在本地目录创建wordcount.txt文件,并随便输入写英文,如:
aa bb cc dd(2)上传文件
在hadoop中新建文件夹:
hadoop fs -mkdir /input/ hadoop fs -mkdir /output/ hadoop fs -rm -r -skipTrash /data/wordcount (删除语句)查看hadoop的文件夹,在终端下直接是查看不到的
hadoop fs -ls -R /上传文件到hdfs的文件夹/input/wordcount/下
hadoop fs -put /home/wordcount.txt /input/wordcount(3)执行命令(也可以在jar所在文件目录下操作)
hadoop jar /opt/hadoop-2.6.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /input/wordcount/ /output/wordcount/格式为:hadoop jar jar包 处理文件名 输入文件夹 输出文件夹
将出现这样的日志 (4)查看文件
去输出文件中查看结果,output/wordcount里面会有三个文件,有一个带part的就是输出结果,可以使用hadoop fs -cat 输出文件的路径查看结果
(1)启动hadoop后会出现JAVA ERROR
JAVA_HOME路径配置不对或者没有配置
(2)在子节点输入jps时出现 “程序 ‘jps’ 已包含在下列软件包中” ,则在终端输入一下语句,注意jdk路径后面的/bin/jps 1不要漏掉
sudo update-alternatives --install /usr/bin/jps jps "你的jdk路径"/bin/jps 1(3)无法登陆网页查看集群
点名感谢这位哥们的解决方法,给我看笑了,瞬间解决我的问题