1.Hadoop安装
0.系统版本信息
OS:Debian-8.2 JDK:1.8.0_181 Hadoop:2.8.4
A:主机信息
192.168.74.131 master 192.168.74.133 slave1 192.168.74.134 slave2 192.168.74.135 slave3
B:配置好hosts和hostname文件,
在每台机器上配置好,第一次配置完成后需要reboot,检测是否配置好使用ping master,ping slave1即可
cat /etc/hosts 192.168.74.131 master 192.168.74.133 slave1 192.168.74.134 slave2 192.168.74.135 slave3
root@master:~$ cat /etc/hostnamecat /etc/hostname master root@slave1:~$ cat /etc/hostnamecat /etc/hostname slave1 root@slave2:~$ cat /etc/hostnamecat /etc/hostname slave1 root@slave3:~$ cat /etc/hostnamecat /etc/hostname slave3
C:添加hadoop用户,并给予sudo使用权限,需要以root用户身份分别在三台虚拟机上执行
#创建了可以登陆的 hadoop 用户,用户组为hadoop,并使用 /bin/bash 作为 shell $ groupadd hadoop $ useradd -g hadoop -m hadoop -s /bin/bash #设置密码 $ passwd hadoop #为 hadoop 用户增加管理员权限,方便部署,避免一些对新手来说比较棘手的权限问题 $ adduser hadoop sudo
设置sudo为不需要密码
#su - (注意有- ,这和su是不同的,在用命令"su"的时候只是切换到root,但没有把root的环境变量传过去,还是当前用乎的环境变量,用"su -"命令将环境变量也一起带过去,就象和root登录一样) $ su - $ vi /etc/sudoers#追加如下内容 #hadoop ALL=(ALL) ALL#密码5分钟后会失效 hadoop ALL=(ALL) NOPASSWD:ALL#一劳永逸的做法
D.关闭防火墙,关闭selinux,关闭ipv6
debian默认是不安装selinux
#返回结果是0表示ipv6没有关闭,为1表示ipv6关闭 $cat /proc/sys/net/ipv6/conf/all/disable_ipv6 #关闭方法 $ sudo su - $ vim /etc/sysctl.conf #disable ipv6 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 #关闭selinux #修改配置文件需要重启机器:修改/etc/selinux/config 文件 将SELINUX=enforcing改为SELINUX=disabled #重启 $ reboot
1.master可以ssh免密码登录各台slave机器
如果ssh免密码登录有问题,需要将每个.ssh/下的所有文件删除重新发送认证文件#每台机器上切换到hadoop用户
$ su hadoop #在每台机器上ssh localhost在/home/目录下会生成目录.ssh $ ssh localhost #master上执行 $ cd /home/hadoop/.ssh $ ssh-keygen -t rsa //生成其无密码密钥对,一路回车键,生成的密钥对:id_rsa和id_rsa.pub $ cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys $ scp authorized_keys hadoop@slave1:/home/hadoop/.ssh/authorized_keys $ scp authorized_keys hadoop@slave2:/home/hadoop/.ssh/authorized_keys $ scp authorized_keys hadoop@slave3:/home/hadoop/.ssh/authorized_keys #在master上检测是否可以无密码登录,拷贝完成之后,最好在每个slave下执行 ssh localhost #在master下检测是否能够免密码登录,第一次需要密码,然后就不再需要密码了 ssh slave1 ssh slave2 ssh slave3
2.在每台主机上分别安装jdk并配置环境变量,也可以在master上安装好后使用scp
A:下载jdk,解压移动到指定文件夹下
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz tar zxvf jdk-8u181-linux-x64.tar.gz mv jdk1.8.0_181 /home/hadoop/opt
B:配置环境变量
sudo vim /etc/profile #Set Java Path export JAVA_HOME=/home/hadoop/opt/jdk1.8.0_181 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar #立即生效 source /etc/profile #验证 java -version
3.安装hadoop-2.8.4
首先所有的机器切换至hadoop用户,su hadoop
镜像地址http://mirror.bit.edu.cn/apache/hadoop/common/
A:下载hadoop-2.8.4
wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.8.4/hadoop-2.8.4.tar.gz
B:解压移动到指定的文件夹下
tar zxvf hadoop-2.8.4.tar.gz mv hadoop-2.8.4 /home/hadoop/opt/
C:创建如下目录
cd /home/hadoop/ mkdir data1 cd data1 mkdir dfs mkdir tmp mkdir dfs/name mkdir dfs/data mkdir dfs/tmp
D:修改目录/home/hadoop/opt/hadoop-2.8.4/etc/hadoop下的配置文件
#hadoop-env.sh
export JAVA_HOME=/home/hadoop/opt/jdk1.8.0_181
#yarn-env.sh
export JAVA_HOME=/home/hadoop/opt/jdk1.8.0_181
#slaves,这里有3个机器,下面dfs.replication中的value不能超过节点数,而且这里有个坑是如果有的文件的副本数不满足这里定义的value时,在后边添加节点或者删除节点后台移动block时会报错,需要修复
slave1 slave2 slave3
#core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> <description>NameNode URI</description> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> <description>该属性值单位为KB,131072KB即为默认的64M,SequenceFiles文件中.读写缓存size设定</description> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/home/hadoop/data1/tmp</value> <description>Abase for other temporary directories.</description> </property> </configuration>
#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:/home/hadoop/data1/dfs/name</value> <description>命名空间和事务在本地文件系统永久存储的路径</description> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/hadoop/data1/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>3</value> <description>分片数量,伪分布式将其配置成1即可</description> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> </configuration>
#mapred-site.xml 先创建然后编辑
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
#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:8040</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8025</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:8041</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property> </configuration>
E:将hadoop传输到slave机器上
scp -r /home/hadoop/opt/hadoop-2.8.4 hadoop@slave1:/home/hadoop/opt/ scp -r /home/hadoop/opt/hadoop-2.8.4 hadoop@slave2:/home/hadoop/opt/ scp -r /home/hadoop/opt/hadoop-2.8.4 hadoop@slave3:/home/hadoop/opt/ scp -r /home/hadoop/data1/ hadoop@slave3:/home/hadoop/ scp -r /home/hadoop/data1/ hadoop@slave2:/home/hadoop/ scp -r /home/hadoop/data1/ hadoop@slave1:/home/hadoop/
F:在所有机器上配置环境变量
vim /etc/profile #追加如下内容 #Set Hadoop Path export HADOOP_HOME=/home/hadoop/opt/hadoop-2.8.4 export PATH=$PATH:$HADOOP_HOME/sbin export PATH=$PATH:$HADOOP_HOME/bin #立即生效 source /etc/profile
G:格式化操作
hadoop namenode -format
H:在master上启动hadoop
启动hadoop cd /home/hadoop/opt/hadoop-2.8.4/sbin start-all.sh #关闭hadoop stop-all.sh
启动后分别在master, slave下输入jps查看进程
I:向hadoop集群系统提交第一个mapreduce任务(wordcount)
cd /home/hadoop/opt/hadoop-2.8.4 #在虚拟分布式文件系统上创建一个测试目录/data/input hdfs dfs -mkdir -p /data/input #将当前目录下的README.txt #文件复制到虚拟分布式文件系统中 hdfs dfs -put README.txt /data/input #查看文件系统中是否存在我们所复制的文件 hdfs dfs -ls /data/input #运行如下命令向hadoop提交单词统计任务 hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.4.jar wordcount /data/input /data/output/result #查看result,结果在result下面的part-r-00000中 hdfs dfs -cat /data/output/result/part-r-00000
4.web-ui
http://192.168.74.131:50070 http://192.168.74.131:8088 http://192.168.74.133:8042 http://192.168.74.133:50075
http://www.cnblogs.com/makexu/