一、前言
如果你有很好的Java基础,当你入门以后,你会感觉到hadoop其实也是很简单的,大数据无非就是数据量大,需要很多机器共同来完成存储工作,云计算无非就是多台机器一起运算。
二、需要基础
1.Linux基础
2.虚拟机的使用
三、具体步骤
1.建立虚拟机
5.虚拟机克隆
6.修改主机名(节点增加时也需要进行如上的配置)
1)修改network文件
vi /etc/sysconfig/network
HOSTNAME=master (HOSTNAME=slaver2) (这里以slave2为例)
2)配置域名 (这里以slave2为例)
vi /etc/hostname
(要是namenode中:HOSTNAME=master 在datanode中:HOSTNAME=slave1)
(或者#> hostnamectl set-hostname master)
7修改hosts文件(以便namenode可以通过主机名解析datanode的IP)
202.204.65.xxx master
202.204.65.xxx slave1
202.204.65.xxx slave2
(节点增加时,往下排列)
8配置ssh免密登入
1)SSH无密码原理:Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。
2)ssh配置
(1)检验是否安装ssh
rpm –qa | grep opensshrpm –qa | grep rsync
如果提示没有安装,则需安装,如果安装跳过该步
#> yum install ssh #安装SSH协议#> yum install rsync #rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件)#> systemctl restart sshd.service #启动服务
(2)这句话一定要看,一定要看,因为关系到配置ssh效率的问题。 原理说白了就是:需要将Master的公钥id_rsa.pub追加到所有的Slave的authorized_keys里边,将所有的Slave中的id_rsa.pub追加到Master的authorized_keys里边。
(a)因此先配置Master和所有的Slave机器的sshd_config
vi /etc/ssh/sshd_config
修改
#RSAAuthentication yes #开启私钥验证#PubkeyAuthentication yes #开启公钥验证
成这样
RSAAuthentication yes # 启用 RSA 认证PubkeyAuthentication yes 开启公钥认证
(b) #启动服务
然后分别在所有机器用户的~/目录下分别建立.ssh文件夹并将其权限设为700
#> chmod 700 ~/.ssh #> cd #> mkdir .ssh#> chmod 777 .ssh
(c)更改namenode和datenode
(a1)slave1的配置
#> cd #> cd .ssh#> ssh-keygen -t rsa#> chmod 700 id*#> cat id_rsa.pub >> authorized_keys#> cat id_rsa >> authorized_keys#> chmod 644 authorized_keys#> scp /root/.ssh/authorized_keys slave1:/root/.ssh#> scp /root/.ssh/authorized_keys slave2:/root/.ssh#> scp /root/.ssh/authorized_keys master:/root/.ssh
(a2)slave2的配置
#> cd #> cd .ssh#> ssh-keygen -t rsa#> chmod 700 id*#> cat id_rsa.pub >> authorized_keys#> cat id_rsa >> authorized_keys#> chmod 644 authorized_keys#> scp /root/.ssh/authorized_keys slave1:/root/.ssh#> scp /root/.ssh/authorized_keys slave2:/root/.ssh#> scp /root/.ssh/authorized_keys master:/root/.ssh
(a3)master的配置
#> cd #> cd .ssh#> ssh-keygen -t rsa#> chmod 700 id*#> cat id_rsa.pub >> authorized_keys#> cat id_rsa >> authorized_keys#> chmod 644 authorized_keys#> scp /root/.ssh/authorized_keys slave1:/root/.ssh#> scp /root/.ssh/authorized_keys slave2:/root/.ssh#> scp /root/.ssh/authorized_keys master:/root/.ssh
9搭建Hadoop
1)官网下载hadoop(以hadoop-2.7.7为例,适用于hadoop-2.x)
#> mv hadoop-2.7.7.tar.gz /usr/local#> cd /usr/local#> tar -zxvf hadoop-2.7.7.tar.gz
2)配置环境变量
#> vi /etc/profile
在结尾添加
HADOOP_HOME=/usr/local/hadoop-2.7.7PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
退出vi,使生效
#> source /etc/profile
检验环境变量是否匹配好
#> which hadoop
3)Hadoop修改java环境
#> vi /usr/local/hadoop-2.7.7/etc/hadoop/hadoop-env.sh
找到export JAVA——HOME=${JAVA_HOME} 改成export JAVA_HOME=/usr/local/jdk1.8.0_201
4配置hadoop core-site.xml 对应有一个core-default.xml, hdfs-site.xml对应有一个hdfs-default.xml,mapred-site.xml对应有一个mapred-default.xml。这三个defalult文件里面都有一些默认配置,现在我们修改这三个site文件,目的就覆盖default里面的一些配置
#> cd /usr/local/hadoop-2.7.7/etc/hadoop
1)修改core-site.xml之前建立临时文件夹
#>mkdir -p /home/hadoop/tmp
配置内容如下
<configuration> <!-- 指定HDFS老大(namenode)的通信地址,说白了就是谁是namenode --> <property> <name>fs.defaultFS</name> <value>hdfs://hdfs:master:9000</value> <!--master是namenode的主机名;8020是默认端口--> </property> <!--配置操作Hadoop的缓存大小--> <property> <name>io.file,buffer.size</name> <value>4096</value> <!--Hadoop 2.x默认是4096--> </property> <!-- 指定hadoop运行时产生文件的存储路径,临时数据存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/tmp</value> <!--需要#>mkdir -p /home/hadoop/tmp,而且不能放到/tmp里面,因为那里面的数据不可控--> </property> <property> <name>fs.default.name</name> <value>hdfs:master:9000</value> </property> <property> <name>dfs.namenode.rpc-address</name> <value>master:8080</value> </property></configuration>
2)修改hdfs-site.xml,修改配置如下
<configuration> <!-- 设置hdfs副本数量 --> <property> <name>dfs.replication</name> <value>3</value> <!--一般习惯是配置3个副本--> </property> <!--配置每个块的大小(hadoop文件最小存储单元)--> <property> <name>dfs.block.size</name> <value>134217728</value> <!--Hadoop2.x是128M,Hadoop1.x是64M,这里添加的是字节--> </property> <!--hdfs的元数据存储位置(元数据:namenode管理的数据,描述datanode的数据)--> <property> <name>dfs.namenode.name.dir</name> <value>/home/hadoop/hadoopdata/dfs/name</value> <!--需要#>mkdir -p /home/hadoop/hadoopdata/dfs/name--> </property> <!--hdfs的数据存储位置--> <property> <name>dfs.datanode.data.dir</name> <value>/home/hadoop/hadoopdata/dfs/data</value> <!--需要#>mkdir -p /home/hadoop/hadoopdata/dfs/data--> </property> <!--hdfs的检测目录--> <property> <name>fs.checkpoint.dir</name> <value>/home/hadoop/hadoopdata/checkpoint/dfs/name</value> </property></configuration>
3)修改mapred-site.xml 由于在配置文件目录下没有,需要修改名称:
#> cp mapred-site.xml.template mapred-site.xml
然后修改配置
<configuration> <!-- 通知框架MapReduce使用YARN --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> <final>true</final> </property> <!--历史服务的通信地址--> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> <!--这里是resourcemanager--> </property> <!--历史服务的Web UI的地址--> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property> <!--设置jobtracker所在机器,端口号9001--> <property> <name>mapred.job.tracker</name> <value>master:9001</value> </property> </configuration>
4)修改yarn-site.xml,修改内容如下
<configuration> <!-- reducer取数据的方式是mapreduce_shuffle --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>localhost</value> </property> </configuration>
5将整个hadoop-2.7.7文件夹及其子文件夹使用scp复制到slave1和slave2的相同目录中:
#> scp -r /usr/local/hadoop-2.7.7 slave1:/usr/local/#> scp -r /usr/local/hadoop-2.7.7 slave2:/usr/local/
5启动hadoop
1)格式化hadoop,进入目录:
#> /usr/local/hadoop-2.7.7/etc/hadoop
执行下列之一命令即可
#> hadoop namenode -format (过时)
或
#> hdfs namenode -format
2)启动hdfs和yarn
(1)先启动HDFS(NameNode,DataNode守护进程)
#> cd/usr/local/hadoop-2.7.7#> sbin/start-dfs.sh
(2)再启动YARN
#> sbin/start-yarn.sh
3)验证是否成功,使用命令:jps,输出如下即表示配置成功。
#> jps
12272 Jps
4135 JobTracker
9500 SecondaryNameNode
9943 NodeManager
9664 ResourceManager
8898 NameNode
9174 DataNode
4)可以在浏览器中查看hdfs和mr的状态.hdfs管理界面:http://localhost:50070 MR的管理界面:http://localhost:8088
联系客服