这一篇,憋了好几天,近期打算学习Hadoop大数据方面,真是无从下手,看了好几篇帖子,都是千篇一律,看起来好难,最后下定决心从Hadoop开始吧,一开始入门学习先从CRUD以及安装开始吧,后期熟练了之后再考虑更加高深的知识吧,加油卷起来。
一、服务器配置部分
docker的安装我就不用写了吧,这个网上下载一个安装下一步下一步就完事了。
接下来就是在docker中配置三个节点,一个master,两个slave的集群。
--搜索最新的hadoop
docker search hadoop
--找到最高的评分的下载
docker pull sequenceiq/hadoop-docker
--本地执行,分别启动各自的服务,注意master节点,需要客户端连接之类,因此通过宿主机暴露端口
docker run -p 2888:2888 -p 3888:3888 -p 2181:2181 -p 9000:9000 -p 50070:50070 -p 8485:8485 -p 50010:50010 -p 8088:8088 --name master -d -h master sequenceiq/hadoop-docker
docker run --name slave1 -d -h slave1 sequenceiq/hadoop-docker
docker run --name slave2 -d -h slave2 sequenceiq/hadoop-docker
--本地执行进入各个服务器
docker exec -it master bash
docker exec -it slave1 bash
docker exec -it slave2 bash
--分别在每个节点上生成rsakey以及配置ssh登陆信息,就是默认允许各个节点通信
ssh localhost
cd ~/.ssh
ssh-keygen -t rsa
rm -r authorized_keys
cat id_rsa.pub > authorized_keys
cat authorized_keys
cp /etc/skel/.bash* /root/
--将生成key下载到宿主机,整合到一份文件中
docker cp master:/root/.ssh/authorized_keys authorized_keys_master
docker cp slave1:/root/.ssh/authorized_keys authorized_keys_slave1
docker cp slave2:/root/.ssh/authorized_keys authorized_keys_slave2
cat authorized_keys_master authorized_keys_slave1 authorized_keys_slave2 > authorized_keys
--将整合的key文件,复制到各个hadoop服务中,master,slave1,slave2中
docker cp authorized_keys master:/root/.ssh/authorized_keys
docker cp authorized_keys slave1:/root/.ssh/authorized_keys
docker cp authorized_keys slave2:/root/.ssh/authorized_keys
--复制完成文件后,这个文件权限会出现问题,往上别没写这个,是个坑,找了一天问题才解决,会导致ssh master或者ssh slave1时候需要数据密码,因此需要重新授权用户解决问题
cd ~/.ssh
chown root:root authorized_keys
--每个服务器上配置打开ssh的RSAkey登陆,尤其是AuthorizedKeysFile这个,一定加上~/表示当前用户的路径
vi /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile ~/.ssh/authorized_keys
--重启sshd服务
service sshd restart
--修改每个服务器host
vi /etc/hosts
--将每个服务的都增加上master/slave1/slave2
172.17.0.2 master
172.17.0.3 slave1
172.17.0.4 slave2
--之后通过各台服务器,分别通过ssh访问其他节点,返回last login from之类的就证明登录到该服务器了
ssh master
ssh slave1
ssh slave2
--到这里为止,服务器的配置完成,下面该开始hadoop的服务配置了
二、Hadoop服务集群配置
这部分是配置hadoop集群,多节点的部分,最后输入http://localhost:8088,能够打开页面就算是完事了。
--进入hadoop配置路径
cd /usr/local/hadoop/etc/hadoop/
--修改core-site.xml
vi core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/tmp</value>
</property>
</configuration>
--修改hdfs-site.xml
vi hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/hadoop/data</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop/name</value>
</property>
</configuration>
--修改mapped-site.xml
vi mapped-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
--备份并修改yarn-site.xml
cp yarn-site.xml yarn-site.xml.bak
rm yarn-site.xml
vi yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<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.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:8089</value>
</property>
</configuration>
--配置hadoop-env.sh,增加JAVA_HOME和HADOOP_PREFIX
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64
export HADOOP_PREFIX=/usr/local/hadoop
--建立路径,以上配置文件重的内容,分别在master,slave1,slave2执行
mkdir -p /hadoop/name
mkdir -p /hadoop/data
mkdir -p /hadoop/tmp
--复制hadoop配置文件到其他节点
cd ..
scp -r hadoop/ slave1:/usr/local/hadoop/etc/
scp -r hadoop/ slave2:/usr/local/hadoop/etc/
--主节点集群配置,这个只在主节点配置,其他通用配置已经复制完了
cd hadoop
vi slaves
--具体内容
master
slave1
slave2
--到/usr/local/hadoop/bin/目录下运行,验证初始化是否有问题
cd /usr/local/hadoop/bin/
./hadoop namenode -format
--启动集群
cd ../sbin
./start-all.sh
--jps查看服务是否启动成功
jps
223 DataNode
612 ResourceManager
129 NameNode
704 NodeManager
1725 Jps
388 SecondaryNameNode
三、完事
浏览器输入:http://localhost:8088,展示以下内容,表示成功啦。后边咱们继续学习如何使用吧。
谢各位的阅读,谢谢您动动手指点赞,万分感谢各位。另外以下是我之前写过的文章,感兴趣的可以点进去继续阅读。
历史文章
Hadoop系列-入门安装
Hadoop系列-HDFS命令
Hadoop系列-Hive安装
Hadoop系列-Hive数据库常见SQL命令
Hadoop系列-HBase数据库
Hadoop系列-HBase数据库(二)
Hadoop系列-HBase数据库JAVA篇
Hadoop系列-Spark安装以及HelloWorld
JAVA面试汇总(五)数据库(一)
JAVA面试汇总(五)数据库(二)
JAVA面试汇总(五)数据库(三)
JAVA面试汇总(四)JVM(一)
JAVA面试汇总(四)JVM(二)
JAVA面试汇总(四)JVM(三)
JAVA面试汇总(三)集合(一)
JAVA面试汇总(三)集合(二)
JAVA面试汇总(三)集合(三)
JAVA面试汇总(三)集合(四)
JAVA面试汇总(二)多线程(一)
JAVA面试汇总(二)多线程(二)
JAVA面试汇总(二)多线程(三)
JAVA面试汇总(二)多线程(四)
JAVA面试汇总(二)多线程(五)
JAVA面试汇总(二)多线程(六)
JAVA面试汇总(二)多线程(七)
JAVA面试汇总(一)Java基础知识
网友评论