简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台。以Hadoop分布式文件系统HDFS(Hadoop Distributed Filesystem)和MapReduce(Goog
简介
Hadoop是Apache软件基金会旗下的一个开源分布式计算平台。以Hadoop分布式文件系统HDFS(Hadoop Distributed Filesystem)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。
对于Hadoop的集群来讲,可以分成两大类角色:Master和Salve。一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的DataNode管理存储的数据。MapReduce框架是由一个单独运行在主节点上的JobTracker和运行在每个从节点的TaskTracker共同组成的。主节点负责调度构成一个作业的所有任 务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。当一个Job被提交时,JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。
从上面的介绍可以看出,HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心。HDFS在集群上实现分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。HDFS在MapReduce任务处理过程中提供了文件操作和存储等支持,MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了Hadoop分布式集群的主要任务。
安装包:http://hadoop.apache.org/releases.html#Release+Notes
1:环境准备
3台机器,系统自定
>1. 下载jdk包,配置环境变量 http://www.Oracle.com/technetwork/java/javase/index.html
>2. 配置虚拟环境
dns解析
vim /etc/resolv.conf
nameserver 223.5.5.5
主机路由
vim /etc/hosts
127.0.0.1 localhost localhost.localdomain
10.68.4.49 master
10.68.4.55 slave1
10.68.4.56 slave2
更改主机名
hostname master ###退出重新登录 或者 [root@master ~]# 通过这个可以看到主机名是否已经变成你需要的
####上述很重要,如果还是localhost的,后续启动端口时,会以127.0.0.1启动,主从不能相互通信
>3. 测试
互ping ping master;ping slave1 成功说明环境OK
2:ssh无秘钥认证
Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure Shell)来启动和停止各个DataNode上的各种守护进程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,故我们需要配置SSH运用无密码公钥认证的形式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上也能使用SSH无密码登录到 NameNode。
注意:如果你的Linux没有安装SSH,请首先安装SSH
Ubuntu下安装ssh:sudo apt-get install openssh-server
Fedora下安装ssh:yum install openssh-server
>1. 创建无密码秘钥对
ssh-keygen -t rsa
三回车即可
根据回车之后的内容可以判断在当前用户的家目录下产生了id_rsa id_rsa.pub
查验当前用户家目录下是否有.ssh 目录,若无创建此目录
ls -al /home/user/
mkdir /home/user/.ssh
cd /home/user/.ssh
cat id_rsa.pub >>authorized_keys ####把上述创建的文件追到到此文件中
chmod 700 -R /home/user
chmod 755 /home/user/.ssh
chmod 600 /home/user/.ssh/authorized_keys
>2. 开启秘钥认证
vim /etc/ssh/sshd_config
PermitRootLogin yes ####避免不能登录,可以先放开root登录权限
RSAAuthentication yes ###注释掉这三行即为开启秘钥认证
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
>3. 重启ssh服务
/etc/init.d/sshd restart or service sshd restart or centos7:systemctl restart sshd.service
>4. 把公钥拷贝到其它机器上,并追加到authorized_keys此文件中
>5. 所有机器重复上述操作
>6. 校验
ssh slave ####第一次认证需要输入yes,再次测试不需要输入任何东西登录成功即为OK
3:hadoop 安装,先安装一台,其余的直接scp过去即可
>1. 解压包至你想要的目录
我的是/usr/local/hadoop
mkdir /usr/local/hadoop/tmp
设置Hadoop环境变量
export HADOOP_HOME=/usr/hadoop
export PATH=$PATH :$HADOOP_HOME/bin
>2. 配置文件
cd /usr/local/hadoop/etc/hadoop
vim core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop/tmp</value>
<!--临时目录得提前创建才行-->
<description>A base for other temporary directories.</description>
</property>
<!-- file system properties -->
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
vim hadoop-env.sh ####指定jdk路径
export JAVA_HOME=/data/java/jdk
vim 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:/usr/hadoop/dfs/name</value>
</property-->
<!--property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/hadoop/dfs/data</value>
</property-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
vim mapred-site.xml
<configuration>
<!--property>
<name>mapred.job.tracker</name>
<value>http://10.68.4.49:9001</value>
</property-->
<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>
vim yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<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>
vim slaves
slave1
slave2
>3. 拷贝至其他机器
scp -r /usr/local/hadoop user@IP:/usr/local
>4. server 格式化hdfs文件系统
Hadoop namenode -format ###初次启动才需要
cd /usr/local/hadoop/sbin
主从依次启动
./start-all.sh
>5. 校验
hadoop dfsadmin -report 查看Hadoop集群的状态
也可以通过jps查看
网页校验
http://10.68.4.49:8088
http://10.68.4.49:50070
如果不行的话就看日志吧
日志默认目录:/usr/local/hadoop/logs
可以自定义,修改此文件:vim /usr/local/hadoop/etc/hadoop/log4j.properties
hadoop dfsadmin -safemode leave 关闭安全模式
各文件参数详解见:
http://www.cnblogs.com/yinghun/p/6230436.html