Hadoop集群搭建及Python操作

 最近项目中在做千亿大数据存储检索需求,要把10T的文本数据进行解析处理存入数据库进行实时检索,文件的存储成为一个首要处理的问题,使用了多种存储方式,都不是很满足要求,最后使用 HDFS 分布式文件存储系统发现效率、管理等各方面都挺不错,就研究了一下搭建使用方式,特此记录文档

10余年的清水网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。网络营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整清水建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联公司从事“清水网站设计”,“清水网站推广”以来,每个客户项目都认真落实执行。

环境

修改主机名

 
 
 
 
  1. # 按照上面环境配置修改每个机器的hostname
  2. vi /etc/hostname
  3. # 使用hostname命令使其生效,就不用重启了
  4. hostname xxxx

修改hosts文件

 
 
 
 
  1. vi /etc/hosts
  2. 192.168.143.130 master
  3. 192.168.143.131 slave1
  4. 192.168.143.132 slave2
  5. 192.168.143.133 slave3
  6. 192.168.143.134 slave4

配置免密登录

 
 
 
 
  1. ssh-keygen -t rsa
  2. ssh-copy-id -i ~/.ssh/id_rsa.pub master
  3. ssh-copy-id -i ~/.ssh/id_rsa.pub slave1
  4. ssh-copy-id -i ~/.ssh/id_rsa.pub slave2
  5. ssh-copy-id -i ~/.ssh/id_rsa.pub slave3
  6. ssh-copy-id -i ~/.ssh/id_rsa.pub slave4

安装JDK(每台机器)

 
 
 
 
  1. apt-get install -y openjdk-8-jre-headless openjdk-8-jdk

配置环境变量

在/etc/profile文件最后添加如下内容:

 
 
 
 
  1. export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
  2. export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools/jar
  3. export HADOOP_HOME=/usr/hadoop-3.3.0/
  4. export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
  5. export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
  6. export HADOOP_COMMON_HOME=$HADOOP_HOME
  7. export HADOOP_HDFS_HOME=$HADOOP_HOME
  8. export HADOOP_MAPRED_HOME=$HADOOP_HOME
  9. export HADOOP_YARN_HOME=$HADOOP_HOME
  10. export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
  11. export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

使环境变量生效

 
 
 
 
  1. source /etc/profile

创建目录(每天机器)

创建目录的时候要注意,先通过df -h命令查看本机上的磁盘空间,确定好数据存储的磁盘,然后创建以下三个目录,在下面的配置文件hdfs-site.xml中修改对应的目录配置即可

 
 
 
 
  1. mkdir -p /home/hadoop/dfs/name
  2. mkdir -p /home/hadoop/dfs/data
  3. mkdir -p /home/hadoop/temp

安装配置Hadoop

下载Hadoop安装包

http://archive.apache.org/dist/hadoop/core/stable/hadoop-3.3.0.tar.gz

 
 
 
 
  1. # 解压后拷贝到/usr目录下
  2. tar -xzvf hadoop-3.3.0.tar.gz
  3. mv hadoop-3.3.0 /usr

配置Hadoop

配置文件在

/usr/hadoop-3.3.0/etc/hadoop目录下

hadoop-env.sh

 
 
 
 
  1. export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
  2. export HDFS_NAMENODE_USER=root
  3. export HDFS_DATANODE_USER=root
  4. export HDFS_SECONDARYNAMENODE_USER=root
  5. export YARN_RESOURCEMANAGER_USER=root
  6. export YARN_NODEMANAGER_USER=root

core-site.xml

 
 
 
 
  1.   
  2.     fs.defaultFS
  3.     hdfs://master:9000
  4.   
  5.   
  6.     hadoop.http.staticuser.user
  7.     root
  8.   
  9.   
  10.     dfs.permissions.enabled
  11.     false
  12.   

hdfs-site.xml配置多个文件存储目录,使用逗号隔开即可

 
 
 
 
  1.   
  2.     dfs.namenode.name.dir
  3.     /home/hadoop/dfs/name
  4.   
  5.   
  6.     dfs.dataname.data.dir
  7.     /home/hadoop/dfs/data,/usr1/hadoop/dfs/data
  8.   
  9.   
  10.     dfs.replication
  11.     2
  12.   

mapred-site.xml

 
 
 
 
  1.   
  2.     mapreduce.framework.name
  3.     yarn
  4.   

yarn-site.xml

 
 
 
 
  1.   
  2.     yarn.resourcemanager.hostname
  3.     master
  4.   
  5.   
  6.     yarn.resourcemanager.webapp.address
  7.     master:8088
  8.   
  9.   
  10.     yarn.nodemanager.aux-services
  11.     mapreduce_shuffle
  12.   

 workers

这里配置的就是DataNode的存储机器,不建议用master作为存储,如果存满了集群就不能用了

 
 
 
 
  1. slave1
  2. slave2
  3. slave3
  4. slave4

将master上的/usr/hadoop-3.3.9拷贝到其他机器即可

 
 
 
 
  1. scp /usr/hadoop-3.3.0 slave1:/usr
  2. scp /usr/hadoop-3.3.0 slave2:/usr
  3. scp /usr/hadoop-3.3.0 slave3:/usr
  4. scp /usr/hadoop-3.3.0 slave4:/usr

格式化HDFS目录(在master机器)

 
 
 
 
  1. hdfs namenode-format

启动Hadoop

在master机器上执行就可以了,执行完以后可以使用jps命令在所有机器上查看进程状态

 
 
 
 
  1. cd /usr/hadoop-3.3.0/sbin
  2. ./start-all.sh

查看进程状态

在master和slave上分别执行jps命令

查看是否成功

在浏览器上打开下面的网页,看能否正常访问

 
 
 
 
  1. # Hadoop集群信息
  2. http://192.168.143.130:8088/cluster
  3. # HDFS地址
  4. http://192.168.143.130:9870/dfshealth.html
  5. # DataNode地址
  6. http://192.168.143.130:9864/datanode.html
  7. # NodeManager地址
  8. http://192.168.143.130:8042/node
  9. # SecondaryNameNode
  10. http://192.168.143.130:9868/status.html

测试文件上传(master)

 
 
 
 
  1. hdfs dfs -mkdir /test
  2. hdfs dfs -put start-dfs.sh /test

HDFS操作命令

创建文件夹

 
 
 
 
  1. hdfs dfs -mkdir /myTask

创建多层文件

 
 
 
 
  1. hdfs dfs -mkdir -p /myTask/input

上传文件

 
 
 
 
  1. hdfs dfs -put /opt/wordcount.txt /myTask

查看总目录下的文件和文件夹

 
 
 
 
  1. hdfs dfs -ls /

查看myTask目录下的wordcount.txt文件内容

 
 
 
 
  1. hdfs dfs -cat /myTask/wordcount.txt

删除文件或文件夹

 
 
 
 
  1. hdfs dfs -rm -r /myTask/wordcount.txt

下载文件到本地

 
 
 
 
  1. hdfs dfs -get /myTask/wordcount.txt /opt

Python操作hdfs

python操作hdfs时,如果要进行上传下载文件,必须在执行代码的机器上配置hosts文件,原因是hdfs的namenode和datanode注册后是以hostname进行记录的,如果不配置直接进行上传下载操作,那么将会采用hostname进行操作,因此需要在本机上配置hdfs集群机器IP和hostname的对应配置。例如我在本机上进行操作,必须配置如下:

 
 
 
 
  1. C:\Windows\System32\drivers\etc\hosts
  2. 192.168.143.130 master
  3. 192.168.143.131 slave1
  4. 192.168.143.132 slave2
  5. 192.168.143.133 slave3
  6. 192.168.143.134 slave4

安装库

 
 
 
 
  1. pip install hdfs

操作

连接

 
 
 
 
  1. from hdfs.client import Client
  2. client = Client("http://192.168.143.130:9870")

创建目录

 
 
 
 
  1. client.makedirs(hdfs_path)

删除文件

 
 
 
 
  1. client.delete(hdfs_path)

上传文件

 
 
 
 
  1. client.download(hdfs_path, local_path)

获取目录下文件列表

 
 
 
 
  1. client.list(hdfs_path)

总结

HDFS 文件存储集群的优点是:配置要求低、易于扩展、效率比较高、非常适合大批量文件存储,而且可以提供 web 管理页面,提供非常好的第三方库。在进行 web 开发时,作为文件和图片存储库也是非常好的选择。

网站题目:Hadoop集群搭建及Python操作
网站路径:http://www.shufengxianlan.com/qtweb/news1/290801.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联